MySQL - BETWEEN子句与DATETIME无法正常工作

时间:2017-03-23 00:58:00

标签: mysql sql datetime

我有一个数据库,它存储了创建记录的日期。问题是,当我在1年内尝试SELECT所有记录时,我没有返回任何行。

我创建了一个SQLFiddle来说明我拥有的内容以及我正在尝试做的事情:http://sqlfiddle.com/#!9/33a32b/8

SELECT aux.description, DATE_FORMAT(aux.date_creation, '%d/%m/%Y às %H:%i') AS `formatted_date`
  FROM aux
  WHERE aux.date_creation BETWEEN 'CURDATE() - INTERVAL 1 YEAR' AND 'CURDATE()'
  ORDER BY `formatted_date` DESC;

1 个答案:

答案 0 :(得分:2)

这是您的查询:

SELECT aux.description, DATE_FORMAT(aux.date_creation, '%d/%m/%Y às %H:%i') AS `formatted_date`
FROM aux
WHERE aux.date_creation BETWEEN 'CURDATE() - INTERVAL 1 YEAR' AND 'CURDATE()'
ORDER BY `formatted_date` DESC;

单引号不正确。你有一个字符串常量,而不是日期表达式。据推测,date_creation已成为过去,所以您只需要:

SELECT aux.description,
       DATE_FORMAT(aux.date_creation, '%d/%m/%Y às %H:%i') AS formatted_date
FROM aux
WHERE aux.date_creation >= CURDATE() - INTERVAL 1 YEAR
ORDER BY aux.date_creation DESC;

请注意,我也更改了ORDER BY。通常情况下,一个人希望1月2日跟随1月1日,而不是2月1日。