MySQL数据库中“ Local Datetime”类型的列与“ TIMESTAMP”类型不匹配

时间:2019-05-16 10:43:39

标签: mysql database datetime timestamp

我在MySQL 5.6版中遇到类型兼容性问题。 我将此数据格式设置为Local Date time(2007-01-01T00:25:47),我需要将它们写在数据库上,但是找不到与MySQL兼容的对应类型。

我已经尝试过:

  • DATETIME
  • TIMESTAMP

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您的问题是T中的Local Date time使得该值与MySQL的DATETIMETIMESTAMP列不兼容。但是,您可以使用STR_TO_DATE来转换格式,或者使用REPLACE来将T替换为空格(从而使其成为MySQL兼容的日期时间)来解决。例如:

create table test (d datetime, t timestamp);
insert into test values 
(str_to_date('2007-01-01T00:25:47', '%Y-%m-%dT%H:%i:%s'), str_to_date('2007-01-01T00:25:47', '%Y-%m-%dT%H:%i:%s')),
(replace('2007-01-01T00:25:47', 'T', ' '),replace('2007-01-01T00:25:47', 'T', ' '));
select * from test

输出:

d                       t
2007-01-01 00:25:47     2007-01-01 00:25:47
2007-01-01 00:25:47     2007-01-01 00:25:47

Demo on dbfiddle

答案 1 :(得分:0)

您是否尝试过使用MySQL命令将字符串解析为日期?

STR_TO_DATE(str,format)

您可以尝试将当前类型转换为字符串,然后通过STR_TO_DATE命令将其通过管道传输,然后以正确的格式存储在数据库中。

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_str-to-date