【发布时间】:2015-03-27 09:23:59
【问题描述】:
我正在传输数据并更新时间格式。
源数据有一个时间戳(存储为 int(10)),我正在使用以下内容尝试转换为日期时间。
INSERT INTO `t2`
SELECT
t1.type,
FROM_UNIXTIME(t1.event_time,'%Y-%m-%d %H:%i:%s')
FROM t1;
运行此查询时会遇到以下问题...
Error detected in migrationX.sql ( Incorrect datetime value: '2014-07-06T13:00:00Z' for column 'event_date_time' at row 1 [ INSERT INTO `t2`
SELECT
t1.type,
FROM_UNIXTIME(t1.event_time,'%Y-%m-%d %H:%i:%s')
FROM t1; ] )
谁能说明为什么输出会包含 T 和 Z 字符的原因?
===================
关于表结构的重要信息...
CREATE TABLE `t1` (
`t1_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`event_time` int(10) unsigned NOT NULL,
PRIMARY KEY (`t1_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `t2` (
`t2_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`event_date_time` DATETIME NULL,
PRIMARY KEY (`t2_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
===================
【问题讨论】:
-
您是否在
t2上定义了BEFORE INSERT触发器? -
t1.event_time 包含这种格式,你要先检查一下
-
另外,请显示
SHOW CREATE TABLE t2的输出? -
t1 事件时间 - 有几百万个元组,但都包含 10 位数字(使用 SELECT * FROM t1 CHAR_LENGTH(event_time) = 10; 检查)我将向 OP 添加创建语法
-
@eggyal 不涉及任何触发器。
标签: mysql unix-timestamp