MySQL-BETWEEN子句不能与DATETIME一起正常工作

MySQL-BETWEEN子句不能与DATETIME一起正常工作,mysql,sql,datetime,Mysql,Sql,Datetime,我有一个数据库,其中存储了记录的创建日期。问题是,当我尝试选择1年内的所有记录时,没有返回任何行 我创建了一个SQLFiddle来说明我所拥有的以及我正在尝试做的事情: 这是您的查询: 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() - INTERVA

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

我创建了一个SQLFiddle来说明我所拥有的以及我正在尝试做的事情:

这是您的查询:

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\u 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;
注意,我还通过
更改了
顺序。通常,人们希望1月2日在1月1日之后,而不是2月1日。

这是您的问题:

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\u 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;

注意,我还通过
更改了
顺序。通常,人们希望1月2日跟在1月1日之后,而不是2月1日。

您也应该在这里输入代码。SQLFiddle并不总是在线的。你应该把你的代码也放在这里。SQLFiddle并不总是在线的。我使用的是单引号中的函数,没有问题。这仅仅发生在这个查询中。奇怪的东西。非常感谢,伙计!我使用单引号中的函数,没有问题。这仅仅发生在这个查询中。奇怪的东西。非常感谢,伙计!