我想从 MySQL 数据库中获取今天或以后日期的记录。数据作为VARCHAR(字段名数据)记录到数据库中,所以我需要使用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,因为列名是使用单引号引用的。它不会转换列 valuedatum,但会转换字符串 datum,这就是它生成 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?
  • 关于MySQL where STR_TO_DATE >= 现在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17764321/

    10-09 20:11