我有一张专门针对DATETIME值的专栏(例如“2010-11-12 12:34:56”)。我正在试图弄清楚如何从表中选择月是当月之后的月份的所有行,同时还考虑到年度变化(即是,如果当前月份是2010年12月,我想选择2011年1月的所有值。)
我很难搞清楚如何去做。这是我当前查询选择当月剩余时间的所有值:
$query = "SELECT * FROM mytable WHERE uid = " . $_SESSION['uid'] . " AND EXTRACT(YEAR FROM NOW()) = EXTRACT(YEAR FROM date_time) AND EXTRACT(MONTH FROM NOW()) = EXTRACT(MONTH FROM date_time) AND EXTRACT(DAY FROM NOW()) < EXTRACT(DAY FROM date_time) ORDER BY date_time";
我尝试在http://dev.mysql.com/doc/refman/5.0/en/date-calculations.html(CURDATE和MOD)使用指南,但我无法使用它。 :(
非常感谢任何帮助!
答案 0 :(得分:2)
... WHERE YEAR(date_time) = YEAR(DATE_ADD(NOW(), INTERVAL 1 MONTH))
AND MONTH(date_time) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH))
这个会更快,因为它可以利用日期时间字段上的可用索引:
... WHERE date_time BETWEEN
DATE_SUB(DATE_ADD(NOW(), INTERVAL 1 MONTH),INTERVAL (DAY(NOW())-1) DAY)
AND
DATE_SUB(DATE_ADD(NOW(), INTERVAL 2 MONTH),INTERVAL (DAY(NOW())) DAY)