请问条关于时间的查询语句
请教条关于时间的查询语句
我想实现周一7点前的为上一周、7点开始为本周;实现查询本周或者上周数据
表结构如下
编号 日期
1 2014-12-5 17:15:24
2 2014-12-12 17:15:24
3 2014-12-30 17:15:24
4 2014-1-7 17:15:24
5 2015-1-5 17:15:24
麻烦给下完整的SQL语句谢谢。
------解决思路----------------------
我想实现周一7点前的为上一周、7点开始为本周;实现查询本周或者上周数据
表结构如下
编号 日期
1 2014-12-5 17:15:24
2 2014-12-12 17:15:24
3 2014-12-30 17:15:24
4 2014-1-7 17:15:24
5 2015-1-5 17:15:24
麻烦给下完整的SQL语句谢谢。
------解决思路----------------------
DECLARE @old_DATEFIRST int
SET @old_DATEFIRST = @@DATEFIRST
SET DATEFIRST 1
-- 因为有跨年的情况,比较周数不正确,应该求周的开始、结束时间。
DECLARE @week1 datetime
DECLARE @week2 datetime
-- 求本周一
SET @week1 = DateAdd(day,
1-DatePart(weekday,GetDate()),
GetDate())
-- 划分时间用 07:00
SET @week1 = Convert(datetime,
Convert(varchar(10),@week1,120)+' 07:00',
120)
/* 如果是查询上周就减7天
SET @week1 = DateAdd(day,-7,@week1)*/
SET @week2 = DateAdd(day,7,@week1)
--SELECT @week1, @week2
;with table1(编号,日期) AS (
SELECT 1,'2015-01-05 06:59:59' UNION ALL
SELECT 2,'2015-01-05 07:00:00' UNION ALL
SELECT 3,'2015-01-12 06:59:59' UNION ALL
SELECT 4,'2015-01-12 07:00:00'
)
SELECT *
FROM table1
WHERE 日期 >= @week1
AND 日期 < @week2
SET DATEFIRST @old_DATEFIRST
本周
编号 日期
----------- -------------------
4 2015-01-12 07:00:00
上周
编号 日期
----------- -------------------
2 2015-01-05 07:00:00
3 2015-01-12 06:59:59