我试图在我的数据库中存储时间值,但是 STR_TO DATE FUNCTION 在 mysql 中不起作用,但是当我在 w3school sql 引擎上尝试它时,它以相同的格式工作正常。
INSERT INTO `discussions`( `Name`, `Topic`, `Author`, `Auth_ID`, `day`, `Date`, `Time`, `Activated`, `Topic_ID`)
VALUES ('asdfgh','PCB Designing','ShahzaibAhmed',1,'Sunday','2018-10-28',Time(STR_TO_DATE( '03:57:AM', '%h:%i:%p' ) ),1,2);
这是我尝试时遇到的错误
另外,当我将其更改为日期时,它工作正常并且正确插入,没有任何错误
INSERT INTO `discussions`( `Name`, `Topic`, `Author`, `Auth_ID`, `day`, `Date`, `Time`, `Activated`, `Topic_ID`)
VALUES ('asdfgh','PCB Designing','ShahzaibAhmed',1,'Sunday','2018-10-28',Time(STR_TO_DATE( '20120801', '%Y%m%d' ) ),1,2)
最佳答案
似乎依赖于 MySQL 版本:
SELECT STR_TO_DATE( '03:57:AM', '%h:%i:%p' )
解析MySQL-5.6中的时间, 但不在 MySQL-5.7 中或 MySQL-8.0 .
MariaDB-10.3和 10.2 正确解析结果。
MySQL bug 71386突出显示 sql_mode =NO_ZERO_DATE
,在后来的 MySQL 版本中是默认值,正在产生影响,即使它只是一个时间。
MariaDB-10.3设置 sql_mode=NO_ZERO_DATE
时返回正确的结果事件。
因此,要解决您的错误,请在此查询之前的 session 中禁用“NO_ZERO_DATE”:
set session sql_mode=REPLACE(@@SESSION.sql_mode,'NO_ZERO_DATE','')
关于mysql - Mysql TIME(STR_TO_DATE) 函数不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52546221/