不要問爲什麼(這是我的控制之外的東西),但日期被存儲爲我們的MySQL DB中的varchar(125)RFC-822。存儲爲varchar/rfc822的排序日期
RFC-822 = Mon Jun 13 2011 11:30:00 GMT-0400 (EDT)
或Mon Jun 13 17:00:00 EDT 2011
有沒有一種方法,我可以按日期以該格式或者至少是進行排序,拉出來日期爲YYYYMMDD或Unix時間?
不要問爲什麼(這是我的控制之外的東西),但日期被存儲爲我們的MySQL DB中的varchar(125)RFC-822。存儲爲varchar/rfc822的排序日期
RFC-822 = Mon Jun 13 2011 11:30:00 GMT-0400 (EDT)
或Mon Jun 13 17:00:00 EDT 2011
有沒有一種方法,我可以按日期以該格式或者至少是進行排序,拉出來日期爲YYYYMMDD或Unix時間?
一些巫術可以與第一格式幫助:
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年6月13日星期一17:00:00 EDT'。再一次感謝你。 – bafromca 2011-06-14 14:09:17
我最終使用'SET @dt ='Fri Jul 1 13:00:00 EDT 2011';'和'SELECT CONCAT(SUBSTRING_INDEX(@dt,'EDT',-1),' - ',SUBSTRING_INDEX(STR_TO_DATE @dt,'%a%b%e%H:%i:%s'),'0000-',-1))AS datetime;'謝謝! – bafromca 2011-06-21 14:43:33
有什麼辦法可以通過PHP或其他腳本語言來運行它嗎?據我所見,這在mySQL中是不可能的,因爲['STR_TO_TIME'](http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-到目前爲止)不能處理時區bit – 2011-06-13 17:15:16