2016-09-21 372 views
0

我有一个表,其中包含两列,分别为expMonthexpYear。我需要SELECT *日期早于NOW()。我的问题是,我甚至不知道如何在SQL中处理这个问题,因为我只有一个月和一年。此外,我需要查找给定月份的最大天数,然后根据这些数据拼凑出信息以创建日期,然后将该日期与NOW()进行比较。从我在网上看到的情况来看,你不能仅仅从一个月和一年开始在SQL中创建一个日期。计算月份和年份的日期

实施例:

expMonth = 09 , expYear = 16. 
findNumberOfDays(expMonth) 
createDate(numberOfDaysforMonth,expMonth,expYear)` 

SELECT * FROM Stacks WHERE createDate < NOW(); 

这只是一些逻辑/伪代码。

有没有人有任何建议如何解决这个问题?

+0

我会考虑的能量投入到这些列组合成一个新的,放弃旧的两个。然后享受一些出色的功能和高性能 – Drew

+0

德鲁,如果我对此有任何控制权,我很乐意,但不幸的是,我的团队坚持使用这种糟糕的分贝设计。 – user1830833

回答

0

嗯。 。 。

where str_to_date(concat(exp_year, '-', expmonth), '%Y-%m') < now() 

MySQL可以处理部分日期。但是,如果你真的想,你可以使用

str_to_date(concat(exp_year, '-', expmonth, '-01'), '%Y-%m-%d') < now() 

如果你认为这是更清晰。

+0

Gordon Linoff,如果我错了,请纠正我,但只检查月份和年份,而不是一天。我如何在该功能中加入这一天? – user1830833

+0

@ user1830833。 。 。 MySQL可以处理部分日期。但是,如果你真的想,你可以使用'str_to_date(concat(exp_year,' - ',expmonth,'-01'),'%Y-%m-%d')

0

其中STR_TO_DATE(CONCAT(exp_year, ' - ',expmonth), '%Y-%M-01')< NOW()

如果需要的日期是本月的最后一天:

其中LAST_DAY(STR_TO_DATE(CONCAT(exp_year, ' - ',expmonth), '%Y-%M-01'))< NOW()

相关问题