我有一個名爲Timestamp的字段,它將其值存儲爲文本而不是實際的時間戳。不幸的是,日誌記錄應用程序是不可更改的。mysql日期格式與更改字符串值
所以
table.Timestamp -> text field with format -> "Wed Mar 02 13:28:59 CDT 2011"
我一直在開發一個查詢中使用這個作爲我的時間戳選擇,這是字符串也轉換成一個日期,以清除所有,但最近的一排 - >
MAX(STR_To_DATE(table.Timestamp , '%a %b %d %H:%i:%s CDT %Y')
我的查詢完美...
但是,我發現的是,字符串值 - >'CDT' - >在'CDT'和'CST'之間的變化取決於當前時間是否是天節約光的時間與否。在夏令時期間,它會記錄爲'CDT',反之亦然。
所以所有包含「CST」行,當我運行這個被忽略 - >
MAX(STR_To_DATE(table.Timestamp , '%a %b %d %H:%i:%s CST %Y')
- 包含「CDT」當我運行這個被忽略>
MAX(STR_To_DATE(table.Timestamp , '%a %b %d %H:%i:%s CDT %Y')
和所有行
有沒有辦法使它對兩種字符串格式運行?
編輯 -
因此獲得以下幾方面的數據(僅通過「CDT和 'CST' 不同:
"Wed Mar 02 13:28:59 CDT 2011" and "Tue Mar 08 09:42:07 CST 2011"
目前,它會返回如下:
MAX(STR_To_DATE(table.Timestamp , '%a %b %d %H:%i:%s CDT %Y') Returns - Wed Mar 02 13:28:59 CDT 2011
MAX(STR_To_DATE(table.Timestamp , '%a %b %d %H:%i:%s CST %Y') Returns - Tue Mar 08 09:42:07 CST 2011
我想它返回「Tue Mar 08 09:42:07 CST 2011」無論如何。
編輯2:
這是我的主查詢:
DELETE
FROM `table` main
WHERE STR_To_DATE(main.Timestamp , '%a %b %d %H:%i:%s CST %Y') <
(SELECT COALESCE(STR_To_DATE(sub.Timestamp , '%a %b %d %H:%i:%s CDT %Y'), STR_To_DATE(sub.Timestamp , '%a %b %d %H:%i:%s CST %Y'))
FROM `table` sub
WHERE sub.Retrieving_User = main.Retrieving_User)
如果失敗會返回NULL嗎?如果是這樣,你可以合併這兩個表達式...... –
@Ic - 是的,它將爲時間戳字段返回NULL。合併? – hacket