我如何检索上一年最后三个月的记录?我以为会是这样的:
Date_add(curdate() , interval '-1 2' year_month)
答案 0 :(得分:1)
试试这个:
WHERE my_date_column BETWEEN
SUBDATE(CURDATE(), INTERVAL DAYOFYEAR(CURDATE()) + 91 DAY) AND
SUBDATE(CURDATE(), INTERVAL DAYOFYEAR(CURDATE()) DAY)
91小于31 + 30 + 31,因为BETWEEN 包含。
请注意,如果您的列是日期时间类型,则您需要将结束值设置为当天的最后秒:
SUBDATE(SUBDATE(CURDATE(), INTERVAL DAYOFYEAR(CURDATE()) - 1 DAY), INTERVAL 1 SECOND)
请参阅这些表达式的SQLFiddle,以生成正确的值。
答案 1 :(得分:-1)
假设您将日期列命名为“date”,例如:
SELECT
*
FROM
table
WHERE
YEAR(date) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR))
AND
MONTH(date) BETWEEN 10 AND 12