DATE、TIME 和 DATETIME 類型

絕大多數資料庫儲存了大量的「時序」資料。時序資料只是表示時間狀態的資料。一個組織可能出於各種原因收集時間資料,例如分析天氣型態和其他環境變數、監控交通狀況、研究人口趨勢等。企業還經常需要儲存有關何時下訂單、何時補充庫存、何時僱用員工,以及有關其日常業務的大量其他資訊。

你可能會感到很驚訝,關聯式資料庫不以相同的方式儲存日期和時間。MySQL 尤其具有規範性。例如,它使用通用 yyyy-mm-dd 格式儲存日期值。此格式是固定的,不可變更。就算你更喜歡使用 mm-dd-yyyy 格式,也不可這樣做。但是,你可以使用 DATE_FORMAT 函式在展示層(通常是應用程式)中按照你想要的方式格式化日期。在「在 MySQL 中處理日期和時間」的前兩部分中,我們將從 DATE、TIME 和 DATETIME 開始,研究MySQL的時序資料類型。

MySQL 提供了五種用於儲存日期和時間的類型,有些只儲存日期,有些儲存時間,還有一些同時儲存兩者。下表總結了每種類型:

TIME 類型

MySQL 使用「HH:MM:SS」格式來查詢和顯示表示一天中 24 小時內某個時間的時間值。而表示兩個事件之間的時間間隔,MySQL 則使用大於 24 小時的「HHH:MM:SS」格式。

以下是 Navicat 16「類型」下拉式清單中的 TIME 類型:

Navicat 提供了 TIME INPUT 控制項設定 TIME 值:

以下是一個設定開始和結束時間的 INSERT 陳述式:

DATETIME 類型

很多時候,你需要同時儲存日期和時間。為此,你可以使用 MySQL DATETIME 類型。預設情況下,DATETIME 值的範圍是 1000-01-01 00:00:00 至 9999-12-31 23:59:59。當你從 DATETIME 欄查詢資料時,MySQL 會以相同的 YYYY-MM-DD HH:MM:SS 格式顯示 DATETIME 值。

DATETIME 值使用 5 個位元組儲存。此外,DATETIME 值可以包含一個尾端小數秒,最細可以到微秒,格式為 YYYY-MM-DD HH:MM:SS[.fraction],例如 2015-12-20 10:01:00.999999。

對於輸入 DATETIME 值,Navicat 提供了 DATETIME INPUT 控制項,它結合了 DATE 和 TIME 控制項:

DATETIME 值可以使用包含「T」時間部分 delineator 的字串文字或透過轉換為 DATETIME 來設定:

部落格封存檔