我在MySQL数据库中有“2011年9月13日17:16:28 PDT”形式的时间戳。数据库中字段的类型是VARCHAR。我想将此VARCHAR转换为MySQL中TIMESTAMP类型的字段。
我尝试了一些solutions suggested elsewhere on this site,例如使用string_to_time函数,但这些解决方案都是从不同类型的时间戳开始的。
如何将上面提到的VARCHAR时间戳转换为MySQL识别的TIMESTAMP,以便按日期对数据进行排序?
答案 0 :(得分:7)
你可以在MySQL中使用STR_TO_DATE函数来做到这一点,试试这个:
SELECT STR_TO_DATE("17:16:28 Sep 13, 2011 PDT", '%H:%i:%s %b %d, %Y PDT');
SELECT STR_TO_DATE(field_name, '%H:%i:%s %b %d, %Y PDT') AS new_time
FROM table_name;
答案 1 :(得分:2)
将str_to_date用于格式:
select unix_timestamp(str_to_date("17:16:28 Sep 13, 2011 PDT","%T %b %d, %Y PDT"));
如果日期部分(例如:13)未表示为01,02 ......等。但只有一位数时为1,2,3,将%d更改为%e
要小心,因为时区不会被识别,它只是格式化的字符串文字!如果您对不同的记录有不同的时区,则应使用convert_tz()函数来获取正确的时间戳。