我在平面文件中有一些数据,其中包含一个看起来像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以使其正确插入的任何帮助
答案 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'.