我只想将时间与另一个时间字符串进行比较,所以我使用 STR_TO_DATE
函数将我的时间字符串转换为日期时间格式
下面的语句对我来说工作正常,所以我认为 MySQL 没有任何问题
SELECT STR_TO_DATE('26/04/2011', '%d/%m/%Y');
但我不知道为什么下面的一个对我不起作用
SELECT STR_TO_DATE('11:59:59','%h:%i:%s');
当我在 PhpMyAdmin 的 SQL 控制台中运行时,上面的语句总是返回 NULL
最佳答案
这确实是因为 SQL 模式 NO_ZERO_DATE
。你应该已经看到当 Anand Rockzz 链接到手册时,但那个链接只是解释的一半。从 MySQL 5.7.4 开始,该设置已弃用。在你的第一个例子中,你设定了一个日期;在第二个中,NO_ZERO_DATE
导致返回 NULL,因为您没有指定日期。从 5.7.8 开始,NO_ZERO_DATE
和 NO_ZERO_IN_DATE
已包含在默认的 sql_mode 值中。根据the manual ,似乎已部分恢复弃用和删除(从 5.7.8 开始),因此您可以在 my.cnf
(或每个 session )中明确设置它。
您还应该引用有关 NO_ZERO_DATE 的手册指令。
关于php - MySQL STR_TO_DATE 函数暂时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318941/