我正在为视图编写语法,以便在数据库中定位数据,其中时间戳col大于或等于去年4月的第一个星期一的日期。我不能使用静态日期,因为去年4月的第一个星期一与当前日期有关。
如有任何指示,将不胜感激。我花了相当长的时间试图弄清楚如何使用MySQL的datetime函数来完成这个任务,但到目前为止还没有任何运气!
发布于 2014-02-13 18:07:20
去年四月的当期日期:
SELECT DATE_ADD(CURDATE(), INTERVAL ((4-MONTH(CURDATE()))%24-12)%12 MONTH);以去年四月为当前日期:
SELECT YEAR(DATE_ADD(CURDATE(), INTERVAL ((4-MONTH(CURDATE()))%24-12)%12 MONTH));例如,2013年4月的第一个星期一:
SELECT DATE_SUB('2013-04-07',INTERVAL WEEKDAY('2013-04-07') DAY);去年四月的第一个星期一:
SELECT DATE_SUB(CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL ((4-MONTH(CURDATE()))%24-12)%12 MONTH)),"-04-07"),INTERVAL WEEKDAY(CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL ((4-MONTH(CURDATE()))%24-12)%12 MONTH)),"-04-07")) DAY);发布于 2014-02-13 17:46:18
您可以这样做的一种方法是使用以下SQL:
SELECT * FROM DATA WHERE year(adddate(created_at, interval 9 month)) >= year(curdate());这只是在9个月前将一切转移到未来,因此,就where条款而言,2013年4月1日似乎是2014年1月1日。
你也可以在3个月前把所有的东西都调回原处,但是你也必须改变日期,以确保它在明年的1月1日到4月1日之间起作用。
https://stackoverflow.com/questions/21761241
复制相似问题