my sql time(str\ u to\ u date)函数不起作用

mbzjlibv  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(454)

我试图在我的数据库中存储时间值,但是stru to date函数在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)

s8vozzvw

s8vozzvw1#

似乎依赖于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错误71386强调了sql\u模式 =NO_ZERO_DATE ,在以后的mysql版本中是默认的,会产生影响,尽管它只是一个时间。
mariadb-10.3返回正确的结果事件 sql_mode=NO_ZERO_DATE 已设置。
因此,要解决您的错误,请在此查询之前在会话中禁用“no\u zero\u date”:

set session sql_mode=REPLACE(@@SESSION.sql_mode,'NO_ZERO_DATE','')

相关问题