MYSQLIMPORT中9999年的发布日期

MYSQLIMPORT中9999年的发布日期,mysql,mysqlimport,Mysql,Mysqlimport,我正在使用mysqlimport将数据加载到MySQL中。脚本如下所示: mysqlimport -u $USER -p$PASSWORD -h $HOST -P $PORT $INSTANCE --fields-terminated-by '\t' --local -v $STG_DIR"/"$MYSQL_TABLE 在将数据加载到MySQL时,除了timestamp列具有9999-12-31 00:01:00.000000之外,其余列都可以正常加载。对于该特定列,它只是给出警告并加载00

我正在使用mysqlimport将数据加载到MySQL中。脚本如下所示:

mysqlimport -u $USER -p$PASSWORD -h $HOST -P $PORT $INSTANCE  --fields-terminated-by '\t' --local -v $STG_DIR"/"$MYSQL_TABLE
在将数据加载到MySQL时,除了timestamp列具有
9999-12-31 00:01:00.000000之外,其余列都可以正常加载。对于该特定列,它只是给出警告并加载
0000-00-00 00:00:00.000000

我还尝试使用mysqlyog和mysqlworkbench等工具进行加载,但我也遇到了同样的问题

下面是一个例子:

我的Unix文件中的数据:

3       2007-04-27 13:56:49.805695      2007-04-27 16:00:02.571438 
23659   2006-02-12 00:01:00.0           9999-12-31 00:01:00.0 
使用上述脚本加载到MySQL后:

3       2006-02-12 00:01:00 2007-04-27 13:56:50 
23659   2006-02-12 00:01:00 0000-00-00 00:00:00
问题列为第三列:
0000-00-00:00:00

当我用
9999-12-31 00:01:000
手动更新同一列时,我也得到了相同的结果:

0000-00-00 00:00:00

但是当我用
2000-12-31 00:01:00
对同一列进行手动更新时,我得到了正确的值,就像
2000-12-31 00:01:00
这个列是什么类型的

如果是
时间戳
,则不能接受2038-01-19 03:14:07之后的日期

在这种情况下,必须改用类型
DATETIME


MySql手册:

时间戳的范围为“1970-01-01 00:00:01”UTC到“2038-01-19” 03:14:07'UTC 对于DATETIME,支持的范围为“1000-01-01 00:00:00”到“9999-12-31 23:59:59” 2038年问题:

2038年问题是由于所选数据类型(有符号32位整数)的容量不足造成的

有符号32位整数的最大值为2147483647(1970年1月1日之后的第二个)


当您将其转换为日期时间时,您将得到
2038-01-19 03:14:07

谢谢尼科。。。是的,你是对的,时间戳有限制,所以我改为DATETIME

时间戳:它用于同时包含日期和时间部分的值。时间戳的范围为1970-01-01 00:00:01 UTC到2038-01-19 03:14:07 UTC

DATETIME:用于同时包含日期和时间部分的值。MySQL检索并显示YYYY-MM-DD HH:MM:SS格式的日期时间值。支持的范围为1000-01-01 00:00:00至9999-12-31 23:59:59


再次感谢

只是说:“做需要的事”——这是你告诉你的服务提供商、合作伙伴或下属的事情。不是在你请求帮助时。请编辑答案,而不是链接到外部网站,将所有相关信息添加到答案中 TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC For DATETIME, the supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'