计算月份和年份的日期
我有一个表,其中包含两列,分别为expMonth
和expYear
。我需要SELECT *
日期早于NOW()
。我的问题是,我甚至不知道如何在SQL中处理这个问题,因为我只有一个月和一年。此外,我需要查找给定月份的最大天数,然后根据这些数据拼凑出信息以创建日期,然后将该日期与NOW()
进行比较。从我在网上看到的情况来看,你不能仅仅从一个月和一年开始在SQL中创建一个日期。计算月份和年份的日期
实施例:
expMonth = 09 , expYear = 16.
findNumberOfDays(expMonth)
createDate(numberOfDaysforMonth,expMonth,expYear)`
SELECT * FROM Stacks WHERE createDate < NOW();
这只是一些逻辑/伪代码。
有没有人有任何建议如何解决这个问题?
嗯。 。 。
where str_to_date(concat(exp_year, '-', expmonth), '%Y-%m') < now()
MySQL可以处理部分日期。但是,如果你真的想,你可以使用
str_to_date(concat(exp_year, '-', expmonth, '-01'), '%Y-%m-%d') < now()
如果你认为这是更清晰。
Gordon Linoff,如果我错了,请纠正我,但只检查月份和年份,而不是一天。我如何在该功能中加入这一天? – user1830833
@ user1830833。 。 。 MySQL可以处理部分日期。但是,如果你真的想,你可以使用'str_to_date(concat(exp_year,' - ',expmonth,'-01'),'%Y-%m-%d')
其中STR_TO_DATE(CONCAT(exp_year, ' - ',expmonth), '%Y-%M-01')< NOW()
如果需要的日期是本月的最后一天:
其中LAST_DAY(STR_TO_DATE(CONCAT(exp_year, ' - ',expmonth), '%Y-%M-01'))< NOW()
我会考虑的能量投入到这些列组合成一个新的,放弃旧的两个。然后享受一些出色的功能和高性能 – Drew
德鲁,如果我对此有任何控制权,我很乐意,但不幸的是,我的团队坚持使用这种糟糕的分贝设计。 – user1830833