我有一個包含日期值格式的varchar字段的mysql表;MySQL使用regexp重新排序字符串?
「日/月/年」
我想重新排列這些字符串值,並創建一個日期時間值或時間戳,所以可通過該列正確排序。我不是正則表達式的專家,但我認爲這可能是前進的方向。
我想以下列格式結束日期表格;
YYYY-MM-DD 00:00:00
I,希望我應該(?),則能夠改變列的數據類型到時間戳或日期時間。
預先感謝任何幫助
我有一個包含日期值格式的varchar字段的mysql表;MySQL使用regexp重新排序字符串?
「日/月/年」
我想重新排列這些字符串值,並創建一個日期時間值或時間戳,所以可通過該列正確排序。我不是正則表達式的專家,但我認爲這可能是前進的方向。
我想以下列格式結束日期表格;
YYYY-MM-DD 00:00:00
I,希望我應該(?),則能夠改變列的數據類型到時間戳或日期時間。
預先感謝任何幫助
你不需要爲這個正則表達式,而且應該儘量避免它給外的開箱即處理這種特定情況下的功能。
請查看MySQL STR_TO_DATE()
function。
它需要一個字符串str和一個格式字符串格式。 STR_TO_DATE()如果格式字符串包含日期和時間 零件,或如果字符串包含唯一日期 或時間部分一個日期或時間值 返回一個DATETIME值。
SELECT STR_TO_DATE('31/4/2004', '%m/%d/%Y');
返回:
'2004-04-31'
要強制DATETIME,你可以連接一個時間字符串到你的領域的日期字符串的結尾,例如:
SELECT STR_TO_DATE(CONCAT(myDateColumn, ' ', '00:00:00'), '%m/%d/%Y %h:%i:%s');
謝謝@Sepster,這非常棒。我不需要連接00部分,因爲它引發了一個錯誤 - 我使用的工作電話是; UPDATE table_name SET start_date = STR_TO_DATE(start_date,'%d /%m /%Y%h:%i:%s')WHERE id> 0; – 2013-05-13 14:00:21
@ChristyHerron絕對是我的榮幸,感謝您花時間回覆/接受。 @ bato3 – Sepster 2013-05-13 14:28:05
你不能使用MySQL的正則表達式,因爲在MySQL正則表達式只允許搜索。
感謝,我不知道這是 – 2013-05-13 14:16:46
你_could_使用它,在理論上,在一系列_update_語句_where_條款的一部分的情況下,但它是複雜而笨重,非常不切實際。否則,可以在用戶定義的函數中使用正則表達式來執行此類任務。根據我的回答,我不會爲@ChristyHerron推薦此功能,因爲目前已有的功能已可用於此功能,但可能有其他(例如非日期,問題/業務域特定)用於基於正則表達式的搜索/替換,例如https ://launchpad.net/mysql-udf-regexp – Sepster 2013-05-13 14:46:20
在你的用例中,正則表達式不是必需的! – Stephan 2013-05-13 12:37:45