如何形成MySQL查询以检索下个月的值?

时间:2010-11-18 13:48:46

标签: mysql datetime

我有一张专门针对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)使用指南,但我无法使用它。 :(

非常感谢任何帮助!

1 个答案:

答案 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)