
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - Where 子句
- SQL - Top 子句
- SQL - Distinct 子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL - Having 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線 vs 右連線
- SQL - Union vs Join
- SQL 鍵
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 複合鍵
- SQL - 備用鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 叢集索引
- SQL - 非叢集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - Min & Max
- SQL - 空函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - Group By vs Order By
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - 日期和時間
SQL 提供多種資料型別和函式來處理資料庫中的日期和時間值。這是因為日期和時間值以各種格式表示。例如,表示日期值有兩種常見方法:DD/MM/YYYY 和 MM/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 |