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 中常见的时间类型和查询函数,以及常见的日期查询方法。希望读者可以根据自己的需求灵活运用这些知识。