首頁 >資料庫 >mysql教程 >MySQL中如何進行時間的轉換

MySQL中如何進行時間的轉換

PHPz
PHPz原創
2023-04-20 10:10:074301瀏覽

在MySQL中,時間常常以字串的形式儲存在表中,但這樣做並不方便進行時間的計算和比較。因此,需要將字串類型的時間轉換為時間類型,以方便我們進行相關操作。本文將介紹MySQL中如何進行時間的轉換。

在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()函數時,需要注意以下幾點:

  1. #識別碼大小寫:格式字串中的識別碼(如Y、m、d、H 、i、s等)的大小寫是有差別的。大寫表示嚴格匹配,小寫表示寬鬆匹配。例如,%m表示數字月份,它可以接受01、1這樣的格式;而%M表示英文月份,需要精確匹配。
  2. 分隔符號:在格式字串中使用的分隔符號必須與實際字串中使用的分隔符號一致。例如,如果實際字串中使用了”-”作為日期分隔符,那麼格式字串中也必須使用”-”作為分隔符。
  3. 嚴格模式:當格式字串與實際字串無法匹配時,如果使用了嚴格模式(如在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時間戳記和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中,時間常常以字串的形式儲存在表格中。為了方便進行時間的計算和比較,需要將字串類型的時間轉換為時間類型,以便直接進行計算和比較。可以使用MySQL提供的STR_TO_DATE()和UNIX_TIMESTAMP()函數將字串類型的時間轉換為時間類型或UNIX時間戳,也可以使用DATE_FORMAT()函數將時間類型轉換為字串類型。在使用轉換函數時,需要注意格式字串的書寫規範和使用嚴格模式的問題。

以上是MySQL中如何進行時間的轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn