在本教程中,将学习如何使用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数据类型将日期和时间数据存储在表中。
						上一篇:
								SQL Server数据类型
												下一篇:
								SQL Server数据定义
												
						
						
					
					
					