【问题标题】:mysql dateformat from from_unixtime来自 from_unixtime 的 mysql 日期格式
【发布时间】: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


【解决方案1】:
INSERT INTO `t2`
SELECT
    t1.type,
    FROM_UNIXTIME(t1.event_time)
FROM t1;

【讨论】:

  • 虽然默认格式是我要求的格式,但我已经为皮带和大括号明确定义了它。不幸的是,这没有效果。
猜你喜欢
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 2017-12-17
  • 2018-04-02
  • 2021-05-07
  • 1970-01-01
  • 2011-10-20
相关资源
最近更新 更多