MSSQL中如何查询时间信息

介绍

时间是关系型数据库中最常用的数据类型之一,因为在大多数的应用中,我们都需要记录时间的相关信息,如创建时间,更新时间等。MSSQL也不例外,提供了很多方法来查询和处理时间信息。

日期和时间数据类型

日期和时间数据类型概述

MSSQL共提供了六种日期和时间相关的数据类型,分别是:

DATETIME

SMALLDATETIME

DATE

TIME

DATETIMEOFFSET

TIMESTAMP

其中,DATETIME是最常用的日期和时间类型,其精度可以到秒级别,SMALLDATETIME精度只有分钟级别,而DATETIME则分别存储日期和时间信息。

日期和时间数据类型示例

以下是日期和时间类型的创建示例:

-- 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

其中,111112108是不同的日期和时间格式码,具体可以参考官方文档。

WHERE子句中的日期和时间筛选

日期比较运算符

在WHERE子句中,你可以使用比较运算符对日期进行筛选,比较运算符包括:

=

<>

<

<=

>

>=

例如:

SELECT * FROM orders

WHERE order_date >= '2021-01-01'

AND order_date < '2022-01-01'

返回所有在2021年1月1日和2022年1月1日之间的订单记录。

日期范围查询

你可以使用BETWEENAND来查询指定日期范围内的记录,例如:

SELECT * FROM orders

WHERE order_date BETWEEN '2021-01-01' AND '2022-01-01'

返回所有在2021年1月1日和2022年1月1日之间的订单记录,与上一个例子效果相同。

总结

本文介绍了MSSQL中日期和时间数据类型的相关知识,包括数据类型的概述、创建示例、日期和时间函数、WHERE子句中的日期和时间筛选等。这些知识对于日常数据处理非常重要,希望能够对你有所帮助。

数据库标签