文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  日期和時間類型之間的轉換

13.2.8 日期和時間類型之間的轉換

在某種程度上,您可以將一個時間類型的值轉換為另一個時間類型的值。但是,可能會有一些值的變更或資訊的遺失。在所有情況下,時間類型之間的轉換都受限於結果類型的有效值範圍。例如,雖然 DATEDATETIMETIMESTAMP 值都可以使用相同的格式集來指定,但這些類型的數值範圍並不都相同。TIMESTAMP 值不能早於 1970 UTC 或晚於 '2038-01-19 03:14:07' UTC。這表示像 '1968-01-01' 這樣的日期,雖然作為 DATEDATETIME 值是有效的,但作為 TIMESTAMP 值是無效的,並且會轉換為 0

DATE 值的轉換

  • 轉換為 DATETIMETIMESTAMP 值會增加一個時間部分 '00:00:00',因為 DATE 值不包含時間資訊。

  • 轉換為 TIME 值是沒有用的;結果是 '00:00:00'

DATETIMETIMESTAMP 值的轉換

  • 轉換為 DATE 值會將小數秒數納入考量,並捨入時間部分。例如,'1999-12-31 23:59:59.499' 變成 '1999-12-31',而 '1999-12-31 23:59:59.500' 變成 '2000-01-01'

  • 轉換為 TIME 值會捨棄日期部分,因為 TIME 類型不包含日期資訊。

對於將 TIME 值轉換為其他時間類型,會使用 CURRENT_DATE() 的值作為日期部分。TIME 會被解釋為經過的時間(而不是一天中的時間)並加到日期中。這表示如果時間值超出從 '00:00:00''23:59:59' 的範圍,則結果的日期部分會與目前日期不同。

假設目前日期是 '2012-01-01'TIME'12:00:00''24:00:00''-12:00:00' 在轉換為 DATETIMETIMESTAMP 值時,分別會產生 '2012-01-01 12:00:00''2012-01-02 00:00:00''2011-12-31 12:00:00'

TIME 轉換為 DATE 類似,但會捨棄結果的時間部分:分別為 '2012-01-01''2012-01-02''2011-12-31'

可以使用明確轉換來覆寫隱含轉換。例如,在比較 DATEDATETIME 值時,會將 DATE 值強制轉換為 DATETIME 類型,方法是增加一個 '00:00:00' 的時間部分。若要執行比較,而忽略 DATETIME 值的時間部分,請改為使用 CAST() 函數,方法如下

date_col = CAST(datetime_col AS DATE)

TIMEDATETIME 值轉換為數值形式(例如,透過加上 +0)取決於該值是否包含小數秒部分。TIME(N)DATETIME(N)N 為 0(或省略)時會轉換為整數,而在 N 大於 0 時會轉換為具有 N 個小數位數的 DECIMAL

mysql> SELECT CURTIME(), CURTIME()+0, CURTIME(3)+0;
+-----------+-------------+--------------+
| CURTIME() | CURTIME()+0 | CURTIME(3)+0 |
+-----------+-------------+--------------+
| 09:28:00  |       92800 |    92800.887 |
+-----------+-------------+--------------+
mysql> SELECT NOW(), NOW()+0, NOW(3)+0;
+---------------------+----------------+--------------------+
| NOW()               | NOW()+0        | NOW(3)+0           |
+---------------------+----------------+--------------------+
| 2012-08-15 09:28:00 | 20120815092800 | 20120815092800.889 |
+---------------------+----------------+--------------------+