SQL Server Datetime2數據類型

在本教學中,將學習如何使用SQL Server DATETIME2將日期和時間數據存儲在表中。

SQL Server DATETIME2簡介

要在資料庫中存儲日期和時間,請使用SQL Server DATETIME2數據類型。

DATETIME2的語法如下:

DATETIME2(fractional seconds precision)
  • precision - 小數秒精度是可選的,範圍從07

以下語句說明了如何創建包含DATETIME2列的表:

CREATE TABLE table_name (
    ...
    column_name DATETIME2(3),
    ...
);

DATETIME2有兩個組成部分:日期和時間。

  • 日期範圍為1月01日(0001-01-01)至12月31日(9999-12-31)
  • 時間範圍為00:00:0023:59:59.9999999

DATETIME2值的存儲大小取決於小數秒精度。 對於小於3的精度,它需要6個位元組,對於34之間的精度,它需要7個位元組,對於所有其他精度,它需要8個位元組。

DATETIME2的默認字串文字格式如下:

YYYY-MM-DD hh:mm:ss[.fractional seconds]

在上面的格式中,

  • YYYY是一個四位數字,代表年份。例如2018,它的範圍從00019999
  • MM是一個兩位數的數字,代表一年中的月份。例如12,它的範圍從0112
  • DD是一個兩位數的數字,代表指定月份的第幾天。例如23。它的範圍從0131
  • hh是一個代表小時的兩位數字。它的範圍從0023
  • mm是代表分鐘的兩位數字。 範圍從0059
  • ss是一個兩位數字,表示秒數。 範圍從0059
  • fractional seconds表示秒小數點值,它是07位數字。範圍從09999999

SQL Server DATETIME2示例

以下語句創建一個新表,其中包含一個created_at列,它的數據類型為DATETIME2

CREATE TABLE test.product_colors (
    color_id INT PRIMARY KEY IDENTITY,
    color_name VARCHAR (50) NOT NULL,
    created_at DATETIME2
);

要將當前日期和時間插入created_at列,請將以下INSERT語句與GETDATE()函數一起使用:

INSERT INTO test.product_colors (color_name, created_at)
VALUES
    ('紅色', GETDATE());

GETDATE()函數類似於其他資料庫系統(如MySQL)中的NOW()函數。要將文字值插入DATETIME2列,請使用以下語句:

INSERT INTO test.product_colors (color_name, created_at)
VALUES
    ('紅色', '2020-06-23 09:36:37');

如果要將created_at列的默認值設置為當前日期和時間,請使用以下ALTER TABLE語句:

ALTER TABLE production.product_colors
ADD CONSTRAINT df_current_time
DEFAULT CURRENT_TIMESTAMP FOR created_at;

在此語句中,使用CURRENT_TIMESTAMP作為created_at列的默認值。 請注意,CURRENT_TIMESTAMP返回的值與GETDATE()函數返回的值相同。

現在,當向表中插入新行而未指定created_at列的值時,SQL Server將使用該列的當前日期和時間值:

INSERT INTO production.product_colors (color_name)
VALUES
    ('藍色');

在本教學中,學習了如何使用SQL Server DATETIME2數據類型將日期和時間數據存儲在表中。


上一篇: SQL Server數據類型 下一篇: SQL Server數據定義