3

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

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

有没有一种方法可以按该格式的日期排序,或者至少将日期提取为 YYYYMMDD 或 Unix 时间?

4

1 回答 1

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 的缩写,但并非无处不在。

于 2011-06-13T17:58:44.053 回答