如何从平面文件中将MySQL时间戳字段加载到特定格式?

时间:2016-12-14 20:19:48

标签: mysql date

我在平面文件中有一些数据,其中包含一个看起来像1900-01-01 00:00:00的时间戳字段。我一直在尝试将其加载到MySQL表中,但MySQL正在将其设置为0000-00-00 00:00:00,这对我来说是个问题。我已经尝试在字段上运行一些update命令,但它保持为0000-00-00 00:00:00

我知道from_unixtime函数,但我怎么会在这里使用它?这是我正在运行的加载数据的命令:

load data local infile 'file.txt' into table tgt_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\'' (tbl_name, db_name, timestamp_field, other_col);

此处有问题的字段为timestamp_field

我设法使用from_unixtime update tgt_table set timestamp_field=FROM_UNIXTIME('1900-01-01 00:00:00') where tbl_name = 'test';,但timestamp_field最终看起来像:1969-12-31 18:31:40

非常感谢有关如何格式化列或SQL以使其正确插入的任何帮助

1 个答案:

答案 0 :(得分:2)

看起来可能是列类型问题。

来自MySQL 5.6 documentation on time/date fields

The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.

您在示例中使用了1900-01-01,该时间戳超出了允许的日期范围。相反,请尝试使用具有较大允许范围的DATETIME字段。

The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.