SQL - 日期和時間



SQL 提供多種資料型別和函式來處理資料庫中的日期和時間值。這是因為日期和時間值以各種格式表示。例如,表示日期值有兩種常見方法:DD/MM/YYYYMM/DD/YYYY。類似地,表示時間值的方法也多於一種。

為了讓資料庫識別以任何格式給定的此類資料,我們使用多種資料型別和函式。

將日期和時間資料儲存在資料庫中的唯一棘手部分是確保這些值以與資料型別相同的格式插入表中。

不同的資料庫系統使用不同的資料型別和函式來儲存和處理日期和時間資料。

SQL 中的日期和時間資料型別

日期和時間資料型別用於 SQL 中,以各種格式儲存日期和時間值。SQL 中可用的資料型別如下所示。

序號 資料型別和描述 儲存
1

datetime

它同時儲存日期和時間,從 1753 年 1 月 1 日到 9999 年 12 月 31 日,精度為 3.33 毫秒;格式為:YYYY-MM-DD HH:MI:SS。

8 位元組
2

datetime2

它同時儲存日期和時間,從 0001 年 1 月 1 日到 9999 年 12 月 31 日,精度為 100 納秒。

6 - 8 位元組
3

smalldatetime

它同時儲存日期和時間,從 1900 年 1 月 1 日到 2079 年 6 月 6 日,精度為 1 分鐘。它以 YYYY-MM-DD HH:MI:SS 的格式儲存。

4 位元組
4

date

它僅儲存日期,從 0001 年 1 月 1 日到 9999 年 12 月 31 日,格式為:YYYY-MM-DD。

3 位元組
5

time

它僅儲存時間,精度為 100 納秒。

3 - 5 位元組
6

datetimeoffset

它與 datetime2 相同,並增加了時區偏移量。

8 - 10 位元組
7

timestamp

它儲存每次建立或修改行時更新的唯一編號。它與實際時間無關,並且基於內部時間。每個表只能有一個 timestamp 變數。

示例

在以下示例中,讓我們建立一個名為 SALES_DETAILS 的表,該表僅接受不同格式的日期和時間值。

CREATE TABLE SALES_DETAILS(
   orderDate DATE, 
   shippingDate DATETIME, 
   deliveredDate TIMESTAMP, 
   time TIME
);

要將值插入此表,請使用以下查詢 -

INSERT INTO SALES_DETAILS VALUES
('2023-02-01', '2023-02-01 :10:00','2023-02-03 :18:00', '18:00');

輸出

該表將建立如下所示 -

orderDate shippingDate deliveredDate time
2023-02-01 2023-02-01 :10:00 2023-02-03 :18:00 18:00

SQL 中的日期和時間函式

SQL 還提供多個函式來處理日期和時間值。

例如,有不同的函式可以以不同的格式檢索當前時間戳。讓我們在下面看看其中的一些函式 -

CURDATE() 函式

要獲取當前日期,我們在 MySQL 中使用 CURDATE() 函式。結果日期的格式將為 'YYYY-MM-DD'(字串)或 YYYYMMMDD(數字)。

SELECT CURDATE();

輸出

當我們執行上述查詢時,我們得到當前日期 -

CURDATE()
2023-08-22

NOW() 函式

MySQL NOW() 函式將根據上下文檢索當前日期和時間值作為時間戳,並且返回的值將採用以下兩種格式之一:'YYYY-MM-DD hh:mm:ss' 和 'YYYYMMDDhhmmss'。

SELECT NOW();

輸出

當我們執行上述 SQL 查詢時,我們得到當前日期和時間如下 -

NOW()
2023-08-22 15:30:25

CURRENT_TIMESTAMP() 函式

MySQL CURRENT_TIMESTAMP() 函式用於獲取當前時間戳。返回的值將為 'YYYY-MM-DD hh:mm:ss'(字串)或 YYYYMMDDhhmmss(數字)格式。此函式是 NOW() 的同義詞。

SELECT CURRENT_TIMESTAMP();

輸出

當我們執行上述 SQL 查詢時,我們得到以下輸出 -

CURRENT_TIMESTAMP()
2023-08-22 15:31:32
廣告