MySQL支援DATETIME、TIMESTAMP、DATE、以及TIME等不同類型表示時間。這些類型在MySQL中儲存的時間都是UTC時間。
使用MySQL中的STR_TO_DATE()函數可以將時間字串轉換為時間型別。此函數的語法如下:
STR_TO_DATE(str, format)
其中,str表示要轉換的字串,format表示字串中日期和時間的格式。例如:
SELECT STR_TO_DATE('2019-08-14 21:12:23', '%Y-%m-%d %H:%i:%s');
這條SQL語句將會傳回一個DATETIME類型的時間,表示2019年8月14日21時12分23秒。
使用STR_TO_DATE()函數時,需要注意以下幾點:
在格式字串中,識別碼(例如,Y、m、d、H 、i、s等)的大小寫是具有區別的。大寫表示嚴格匹配,小寫表示寬鬆匹配。例如,%m表示數字月份,它可以接受01、1這樣的格式;而%M表示英文月份,需要精確匹配。
格式化字串中使用的分隔符號必須與實際字串中使用的分隔符號相同。如果實際字串中日期分隔符號使用了“-”,則格式字串也必須使用“-”作為分隔符號。
嚴格模式:當格式字串與實際字串無法匹配時,如果使用了嚴格模式(如在MySQL的設定檔中將sql_mode設為STRICT_ALL_TABLES),則會傳回錯誤;如果沒有使用嚴格模式,則會傳回NULL。
除了STR_TO_DATE()函數之外,還可以使用UNIX_TIMESTAMP()函數將字串類型的時間轉換為UNIX時間戳記。 UNIX時間戳記是整數,表示自1970年1月1日00時00分00秒以來經過的秒數,即當前時間。例如:
SELECT UNIX_TIMESTAMP('2019-08-14 21:12:23');
這條SQL語句將會傳回一個整數,表示2019年8月14日21時12分23秒的UNIX時間戳記。
因為UNIX timestamp和MySQL中的時間型別都是基於UTC時間,所以它們可以直接進行比較和計算。例如,可以使用UNIX_TIMESTAMP()將時間類型轉換為UNIX時間戳,再進行相減,得出兩個時間的時間差。例如:
SELECT UNIX_TIMESTAMP('2019-08-14 21:12:23') - UNIX_TIMESTAMP('2019-08-14 21:12:21');
這條SQL語句將會傳回一個整數,表示2019年8月14日21時12分23秒與2019年8月14日21時12分21秒之間的時間差,即2秒。
除了將字串類型的時間轉換為時間類型,還可以使用DATE_FORMAT()函數將時間類型轉換為字串類型。此函數的語法如下:
DATE_FORMAT(date, format)
其中,date為要轉換的時間,format為傳回的字串格式。例如:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
這條SQL語句將會傳回目前時間的字串表示,格式為」YYYY-MM-DD HH:MI:SS」。
以上是MySQL中怎麼進行時間轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!