MYSQLIMPORT中9999年的发布日期
我正在使用mysqlimport将数据加载到MySQL中。脚本如下所示: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 -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'