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数据定义