在本教程中,将学习如何使用SQL Server DATETIME2
将日期和时间数据存储在表中。
SQL Server DATETIME2简介
要在数据库中存储日期和时间,请使用SQL Server DATETIME2
数据类型。
DATETIME2
的语法如下:
DATETIME2(fractional seconds precision)
precision
- 小数秒精度是可选的,范围从0
到7
。
以下语句说明了如何创建包含DATETIME2
列的表:
CREATE TABLE table_name (
...
column_name DATETIME2(3),
...
);
DATETIME2
有两个组成部分:日期和时间。
- 日期范围为1月01日(
0001-01-01
)至12月31日(9999-12-31
) - 时间范围为
00:00:00
至23:59:59.9999999
。
DATETIME2
值的存储大小取决于小数秒精度。 对于小于3
的精度,它需要6
个字节,对于3
到4
之间的精度,它需要7
个字节,对于所有其他精度,它需要8
个字节。
DATETIME2
的默认字符串文字格式如下:
YYYY-MM-DD hh:mm:ss[.fractional seconds]
在上面的格式中,
YYYY
是一个四位数字,代表年份。例如2018
,它的范围从0001
到9999
。MM
是一个两位数的数字,代表一年中的月份。例如12
,它的范围从01
到12
。DD
是一个两位数的数字,代表指定月份的第几天。例如23
。它的范围从01
到31
。hh
是一个代表小时的两位数字。它的范围从00
到23
。mm
是代表分钟的两位数字。 范围从00
到59
。ss
是一个两位数字,表示秒数。 范围从00
到59
。fractional seconds
表示秒小数点值,它是0
到7
位数字。范围从0
到9999999
。
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
数据类型将日期和时间数据存储在表中。