0

我将如何检索上一年最后三个月的记录?我在想它会是:

 Date_add(curdate() , interval '-1 2' year_month)  
4

2 回答 2

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

于 2013-11-10T23:33:03.903 回答
-1

假设您的日期列名为“日期”,例如:

SELECT 
*
FROM 
table

WHERE
YEAR(date) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR))

AND
MONTH(date) BETWEEN 10 AND 12
于 2013-11-10T23:29:30.130 回答