一、日期格式
在进行日期范围查询之前,我们需要先了解SQLServer中日期的格式,常用的日期格式有以下几种:
-- yyyy-mm-dd SELECT CONVERT(VARCHAR(10), GETDATE(), 120) -- 2021-09-13 -- yyyy-mm-dd hh:mi:ss SELECT CONVERT(VARCHAR(19), GETDATE(), 120) -- 2021-09-13 15:41:30 -- mm/dd/yyyy hh:mi:ss AM (PM) SELECT CONVERT(VARCHAR(30), GETDATE(), 100) -- Sep 13 2021 3:41PM
其中,常用的日期格式是yyyy-mm-dd和yyyy-mm-dd hh:mi:ss,这两种格式可以满足大部分的日期需求。
二、查询特定日期范围
如果我们需要查询一个特定的日期范围内的数据,可以通过在WHERE子句中使用BETWEEN和AND关键字进行查询,下面是一个示例:
SELECT * FROM table_name WHERE date_column BETWEEN '2021-09-01' AND '2021-09-30';
其中,table_name是需要查询的表名,date_column是表中存储日期的列名,'2021-09-01'是查询开始日期,'2021-09-30'是查询结束日期。
三、查询当前日期范围
如果我们需要查询当前日期范围内的数据,可以使用GETDATE()函数获取当前日期,下面是一个示例:
SELECT * FROM table_name WHERE date_column BETWEEN CONVERT(VARCHAR(10), GETDATE(), 120) AND CONVERT(VARCHAR(10), GETDATE(), 120);
其中,table_name是需要查询的表名,date_column是表中存储日期的列名,CONVERT(VARCHAR(10), GETDATE(), 120)会将当前日期转换为yyyy-mm-dd格式。
四、查询本周范围
如果我们需要查询本周范围内的数据,可以使用DATEPART函数获取当前日期是本周的第几天,并计算出本周的开始日期和结束日期,下面是一个示例:
SELECT * FROM table_name WHERE date_column BETWEEN CONVERT(VARCHAR(10), DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 0), 120) AND CONVERT(VARCHAR(10), DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 6), 120);
其中,table_name是需要查询的表名,date_column是表中存储日期的列名,DATEADD和DATEDIFF函数用于计算本周的开始和结束日期,CONVERT(VARCHAR(10), ...)会将日期转换为yyyy-mm-dd格式。
五、查询本月范围
如果我们需要查询本月范围内的数据,可以使用DATEPART函数获取当前日期的月份,并计算出本月的开始日期和结束日期,下面是一个示例:
SELECT * FROM table_name WHERE date_column BETWEEN CONVERT(VARCHAR(7), GETDATE(), 120) + '-01' AND CONVERT(VARCHAR(10), DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0)), 120);
其中,table_name是需要查询的表名,date_column是表中存储日期的列名,CONVERT(VARCHAR(7), GETDATE(), 120) + '-01'可以获取本月的开始日期,DATEADD和DATEDIFF函数用于计算本月的结束日期。