将VARCHAR时间戳转换为TIMESTAMP?

时间:2012-10-17 11:21:12

标签: mysql datetime time timestamp

我在MySQL数据库中有“2011年9月13日17:16:28 PDT”形式的时间戳。数据库中字段的类型是VARCHAR。我想将此VARCHAR转换为MySQL中TIMESTAMP类型的字段。

我尝试了一些solutions suggested elsewhere on this site,例如使用string_to_time函数,但这些解决方案都是从不同类型的时间戳开始的。

如何将上面提到的VARCHAR时间戳转换为MySQL识别的TIMESTAMP,以便按日期对数据进行排序?

2 个答案:

答案 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()函数来获取正确的时间戳。