介绍
时间是关系型数据库中最常用的数据类型之一,因为在大多数的应用中,我们都需要记录时间的相关信息,如创建时间,更新时间等。MSSQL也不例外,提供了很多方法来查询和处理时间信息。
日期和时间数据类型
日期和时间数据类型概述
MSSQL共提供了六种日期和时间相关的数据类型,分别是:
DATETIME
SMALLDATETIME
DATE
TIME
DATETIMEOFFSET
TIMESTAMP
其中,DATETIME
是最常用的日期和时间类型,其精度可以到秒级别,SMALLDATETIME
精度只有分钟级别,而DATE
和TIME
则分别存储日期和时间信息。
日期和时间数据类型示例
以下是日期和时间类型的创建示例:
-- datetime类型
DECLARE @datetime DATETIME
SET @datetime = '2021-05-20 12:30:59'
SELECT @datetime
-- smalldatetime类型
DECLARE @smalldatetime SMALLDATETIME
SET @smalldatetime = '2021-05-20 12:30:00'
SELECT @smalldatetime
-- date类型
DECLARE @date DATE
SET @date = '2021-05-20'
SELECT @date
-- time类型
DECLARE @time TIME
SET @time = '12:30:59'
SELECT @time
-- datetimeoffset类型
DECLARE @datetimeoffset DATETIMEOFFSET
SET @datetimeoffset = '2021-05-20 12:30:59 +01:00'
SELECT @datetimeoffset
-- timestamp类型
DECLARE @timestamp TIMESTAMP
SET @timestamp = CURRENT_TIMESTAMP
SELECT @timestamp
日期和时间函数
获取当前日期和时间
GETDATE()
函数可以获取当前日期和时间:
SELECT GETDATE()
返回结果如下:
2021-05-20 10:14:39.417
除了GETDATE()
函数外,还有其他的函数可以获取当前的日期或时间,如SYSDATETIME()
、SYSDATETIMEOFFSET()
、SYSDATETIMEOFFSET()
等。
日期和时间计算
你可以对日期和时间进行基本的加、减、乘、除操作。
例如:
DECLARE @datetime DATETIME
SET @datetime = '2021-05-20 12:30:59'
SELECT DATEADD(YEAR, -1, @datetime) AS 'Substract one year'
SELECT DATEADD(MONTH, 2, @datetime) AS 'Add two months'
SELECT DATEADD(DAY, 7, @datetime) AS 'Add seven days'
SELECT DATEADD(HOUR, -2, @datetime) AS 'Substract two hours'
返回结果如下:
Substract one year 2020-05-20 12:30:59.000
Add two months 2021-07-20 12:30:59.000
Add seven days 2021-05-27 12:30:59.000
Substract two hours 2021-05-20 10:30:59.000
日期和时间格式化
你可以使用CONVERT()
函数将日期和时间格式化为指定的字符串。
例如:
SELECT CONVERT(VARCHAR(10), GETDATE(), 111) AS 'YYYY/MM/DD'
SELECT CONVERT(VARCHAR(10), GETDATE(), 112) AS 'YYYYMMDD'
SELECT CONVERT(VARCHAR(8), GETDATE(), 108) AS 'HH:MI:SS'
返回结果如下:
YYYY/MM/DD 2021/05/20
YYYYMMDD 20210520
HH:MI:SS 10:16:24
其中,111
、112
和108
是不同的日期和时间格式码,具体可以参考官方文档。
WHERE子句中的日期和时间筛选
日期比较运算符
在WHERE子句中,你可以使用比较运算符对日期进行筛选,比较运算符包括:
=
<>
<
<=
>
>=
例如:
SELECT * FROM orders
WHERE order_date >= '2021-01-01'
AND order_date < '2022-01-01'
返回所有在2021年1月1日和2022年1月1日之间的订单记录。
日期范围查询
你可以使用BETWEEN
和AND
来查询指定日期范围内的记录,例如:
SELECT * FROM orders
WHERE order_date BETWEEN '2021-01-01' AND '2022-01-01'
返回所有在2021年1月1日和2022年1月1日之间的订单记录,与上一个例子效果相同。
总结
本文介绍了MSSQL中日期和时间数据类型的相关知识,包括数据类型的概述、创建示例、日期和时间函数、WHERE子句中的日期和时间筛选等。这些知识对于日常数据处理非常重要,希望能够对你有所帮助。