4

我想从 MySQL 数据库中获取今天或以后日期的记录。数据作为VARCHAR(fieldname datum)记录到数据库中,所以我需要使用STR_TO_DATE。但是,此查询不起作用:

SELECT * FROM Diensten WHERE STR_TO_DATE('datum', '%m-%d-%Y') >= DATE(NOW()) ORDER BY STR_TO_DATE('datum', '%m-%d-%Y') ASC

我也试过 CURDATE(),也不管用。

该查询在没有 WHERE 部分的情况下工作。任何想法如何解决查询?

4

1 回答 1

2

此表达式STR_TO_DATE('datum', '%m-%d-%Y')返回NULL,因为列名是使用单引号引起来的。它不会转换valueof 列datum,而是转换字符串datum,这就是它产生NULL值的原因。

要修复,只需删除列名周围的单引号。

SELECT * 
FROM Diensten 
WHERE STR_TO_DATE(datum, '%d-%m-%Y') >= CURDATE()
ORDER BY STR_TO_DATE(datum, '%d-%m-%Y') ASC
于 2013-07-20T16:41:13.597 回答