MySQL的STR_TO_DATE> =现在

我希望从今天或更晚的日期获取
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部分的情况下工作.任何想法如何修复查询?

最佳答案 此表达式STR_TO_DATE(‘datum’,’%m-%d-%Y’)返回NULL,因为使用单引号引用了列名.它不转换列数据的值,但转换字符串数据,这就是它导致NULL值的原因.

要修复,只需删除列名称周围的单引号即可.

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

> MySQL – when to use single quotes, double quotes, and backticks?

点赞