mysql - Mysql TIME(STR_TO_DATE) 函数不工作

标签 mysql datetime

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

这是我尝试时遇到的错误

enter image description here

另外,当我将其更改为日期时,它工作正常并且正确插入,没有任何错误

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)

enter image description here

最佳答案

似乎依赖于 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/

相关文章:

php - mysqli_fetch_array不知道join select语句mysql php的返回值

python - 如何修复Python中的 "AttributeError: type object has no attribute"?

python - 如何在python中将时区添加到天真的日期时间实例中

Ruby DateTime.Parse 到本地时间

mysql - Laravel 查询构建器表连接

MySQL 错误 1017 (HY000) : Can't find file: './"DatabaseName/Table. frm' (errno: 13)

python - 使用 matplotlib 创建条形图,其中 x 轴为日期,宽度为时间增量

python - 将每日值合并到日内 DataFrame

php - 我想统计特定日期的菜名

mysql - 无法设置 Hibernate + Spring + mysql + maven