--通过sql 查询当前时间的上周六8点到本周六8点的数据
--查询条件大于以下时间
select (case
when GETDATE() < convert(varchar(10),dateadd(week,0,DATEADD(week,DATEDIFF(week,0,GETDATE()),5)),120) +' 08:00:00'
then convert(varchar(10),dateadd(week,-1,DATEADD(week,DATEDIFF(week,0,GETDATE()),5)),120)
else convert(varchar(10),dateadd(week,0,DATEADD(week,DATEDIFF(week,0,GETDATE()),5)),120)
end)+' 08:00:00'
--查询条件小于以下时间
select (case
when GETDATE() < convert(varchar(10),dateadd(week,0,DATEADD(week,DATEDIFF(week,0,GETDATE()),5)),120) +' 08:00:00'
then convert(varchar(10),dateadd(week,0,DATEADD(week,DATEDIFF(week,0,GETDATE()),5)),120)
else convert(varchar(10),dateadd(week,1,DATEADD(week,DATEDIFF(week,0,GETDATE()),5)),120)
end)+' 08:00:00'
总结:通过判断条件case when 实现条件判断,通过与当前周六8点比对,满足条件,就使用一个语句进行时间查询,否则使用另一条语句进行查询。最终通过sql 语句拼接,实现查询。
本次查询使用到的sql server 时间函数包括:
--获取当前时间
GETDATE()
--日期时间格式转换
Convert()
--时间累加函数
DATEADD()
--时间间隔计算函数
DATEDIFF()