询使用SQL Server 进行时间查询

SQL Server 时间查询

1. 时间类型介绍

在 SQL Server 中,datetime 是最常用的时间类型。它可以存储日期和时间信息,精度为毫秒。可以使用以下格式来定义 datetime:

datetime

除了 datetime 外,SQL Server 还有以下几种时间类型:

date:仅存储日期信息,格式为 'YYYY-MM-DD'。

time:仅存储时间信息,格式为 'hh:mm:ss'。

datetime2:精度高于 datetime,可以指定更大的时间范围。

datetimeoffset:比 datetime2 多了一个时区信息。

2. 时间查询函数

SQL Server 中有多个查询函数用于处理时间类型的数据。

2.1. GETDATE()

GETDATE() 函数可以获取当前系统时间,并以 datetime 格式返回。它没有参数,只需调用即可。

SELECT GETDATE()

2.2. DATEADD()

DATEADD() 函数可以在日期上加上或减去一定的时间间隔。它的常用语法如下:

DATEADD(interval, number, date)

其中,interval 可以是以下值:

year:年

quarter:季度

month:月

dayofyear:年中的第几天

day:日

week:周

hour:小时

minute:分钟

second:秒

millisecond:毫秒

例如,要在当前日期上加上一年,可以使用以下语句:

SELECT DATEADD(year, 1, GETDATE())

2.3. DATEDIFF()

DATEDIFF() 函数可以计算两个日期之间的时间间隔。它的常用语法如下:

DATEDIFF(interval, date1, date2)

其中,interval 的取值同 DATEADD() 函数,表示要计算的时间间隔。例如,要计算两个日期之间相差的天数,可以使用以下语句:

SELECT DATEDIFF(day, '2020-01-01', '2021-06-30')

2.4. CONVERT()

CONVERT() 函数可以将一个时间类型转换为另一个时间类型。它的常用语法如下:

CONVERT(datatype, expression, style)

其中,datatype 为要转换的时间类型,expression 为要转换的值,style 为转换的格式。例如,要将日期转换为字符串,可以使用以下语句:

SELECT CONVERT(varchar(10), GETDATE(), 120)

3. 日期查询

在 SQL Server 中,日期查询是最常用的时间查询之一。

3.1. 按日期查询

按日期查询可以用等于号进行查询:

SELECT * FROM table WHERE date = '2021-07-01'

也可以用 BETWEEN 运算符查询一个日期范围:

SELECT * FROM table WHERE date BETWEEN '2021-07-01' AND '2021-07-07'

还可以用 MONTH() 函数和 YEAR() 函数进行查询,例如查询今年 7 月的数据:

SELECT * FROM table WHERE YEAR(date) = YEAR(GETDATE()) AND MONTH(date) = 7

3.2. 按日期时间查询

按日期时间查询可以用等于号进行查询:

SELECT * FROM table WHERE datetime = '2021-07-01 12:34:56'

也可以用 BETWEEN 运算符查询一个时间范围:

SELECT * FROM table WHERE datetime BETWEEN '2021-07-01 00:00:00' AND '2021-07-01 23:59:59'

3.3. 按日期部分查询

有时候我们只需要查询日期的某个部分,如查询日报表,只需查询当天的数据。这时候可以使用 DATEPART() 函数。

例如查询今年所有周六的数据:

SELECT * FROM table WHERE DATEPART(weekday, date) = 7 AND YEAR(date) = YEAR(GETDATE())

其中,DATEPART() 函数的第一个参数为部分名称,如 weekday 表示周几;第二个参数为要查询的值。它返回日期的某个部分的整数值。

4. 结语

本文介绍了 SQL Server 中常见的时间类型和查询函数,以及常见的日期查询方法。希望读者可以根据自己的需求灵活运用这些知识。

数据库标签