对存储为varchar / rfc822的日期进行排序

时间:2011-06-13 15:54:56

标签: mysql sql rfc822

不要问为什么(这是我无法控制的),但日期在我们的varchar(125)MySQL数据库中存储为RFC-822。

RFC-822 = Mon Jun 13 2011 11:30:00 GMT-0400 (EDT)Mon Jun 13 17:00:00 EDT 2011

有没有一种方法可以按日期排序,或者至少将日期拉出YYYYMMDD或Unix时间?

1 个答案:

答案 0 :(得分:1)

有些伏都教可以帮助您使用第一种格式:

SET @dt = 'Mon Jun 13 2011 11:30:00 GMT-0400 (EDT)';

SELECT    
CONVERT_TZ(
  -- Parse all, but timezone
  STR_TO_DATE(@dt, '%a %b %e %Y %H:%i:%s'),

  -- Parse timezone to '+NN:NN' format
  INSERT(SUBSTRING_INDEX(SUBSTRING_INDEX(@dt, 'GMT', -1), ' ', 1), 4, 0, ':'),

  -- Our unified timezone
  '+00:00'
);

-- Result: 2011-06-13 15:30:00

CONVERT_TZ也支持类似EDT的缩写,但不是所有地方都支持。