MySQL:使用 time/dates 和时区信息加载数据
MySQL: LOAD DATA with time/dates with timezone information
我的文本文件带有 Fri, 05 Jan 2013 05:50:00 +0800
形式的时间戳。我不知道如何将文件读入我的 MySQL 数据库。 Fri, 05 Jan 2013 05:50:00
与 '%a, %d %M %Y %H:%i:%s'
一起工作得很好,但 +xx00
会把所有东西都扔掉。好像不是supported.
有没有办法按原样导入文本文件,或者我需要先对其进行预处理以处理时区信息。
有点复杂,但答案是肯定的。
首先,你必须把你的时区信息从+0800
替换成+08:00
,因为MySQL只支持这种偏移表达式。
使用STR_TO_DATE
获取标准日期时间:STR_TO_DATE(SUBSTRING_INDEX(your_time_str, ' ', 5), '%a, %d %M %Y %H:%i:%s')
;
[可选,如果需要]将标准时间字符串从your_time_str
中描述的时区转换为服务器时区:CONVERT_TZ(standard_time_str, SUBSTRING_INDEX(your_time_str, ' ', -1), SELECT @@global.time_zone)
所以最后的陈述是这样的:
CONVERT_TZ(STR_TO_DATE(SUBSTRING_INDEX(your_time_str, ' ', 5), '%a, %d %M %Y %H:%i:%s'), SUBSTRING_INDEX(your_time_str, ' ', -1), SELECT @@global.time_zone)
我的文本文件带有 Fri, 05 Jan 2013 05:50:00 +0800
形式的时间戳。我不知道如何将文件读入我的 MySQL 数据库。 Fri, 05 Jan 2013 05:50:00
与 '%a, %d %M %Y %H:%i:%s'
一起工作得很好,但 +xx00
会把所有东西都扔掉。好像不是supported.
有没有办法按原样导入文本文件,或者我需要先对其进行预处理以处理时区信息。
有点复杂,但答案是肯定的。
首先,你必须把你的时区信息从
+0800
替换成+08:00
,因为MySQL只支持这种偏移表达式。使用
STR_TO_DATE
获取标准日期时间:STR_TO_DATE(SUBSTRING_INDEX(your_time_str, ' ', 5), '%a, %d %M %Y %H:%i:%s')
;[可选,如果需要]将标准时间字符串从
your_time_str
中描述的时区转换为服务器时区:CONVERT_TZ(standard_time_str, SUBSTRING_INDEX(your_time_str, ' ', -1), SELECT @@global.time_zone)
所以最后的陈述是这样的:
CONVERT_TZ(STR_TO_DATE(SUBSTRING_INDEX(your_time_str, ' ', 5), '%a, %d %M %Y %H:%i:%s'), SUBSTRING_INDEX(your_time_str, ' ', -1), SELECT @@global.time_zone)