Даты сортировки сохраняются как varchar / rfc822 - PullRequest
3 голосов
/ 13 июня 2011

Не спрашивайте, почему (это что-то вне моего контроля), но даты хранятся как RFC-822 в нашей базе данных MySQL в varchar (125).

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

Есть ли способ сортировки по дате в этом формате или, по крайней мере, вытащить дату в формате ГГГГММДД или Unix?

1 Ответ

1 голос
/ 13 июня 2011

Некоторые вуду могут помочь с первым форматом:

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, но не везде.

...