文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

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)取決於該值是否包含小數秒部分。當 N 為 0(或省略)時,TIME(N)DATETIME(N) 會轉換為整數;當 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 |
+---------------------+----------------+--------------------+