关于sql 时间段查询的问题
发布网友
发布时间:2022-04-09 12:45
我来回答
共2个回答
热心网友
时间:2022-04-09 14:15
1)
select * from kemu where man='小王' and shijian between dateadd(d,-(case
when datepart(dw,getdate())=1 then datepart(dw,getdate())+5
else datepart(dw,getdate())-2 end),getdate()) and getdate()
2)
select * from kemu where man='小王' and convert(varchar(20),shijian,120) like convert(varchar(7),shijian,120)+'%' and shijian<=getdate()
“ convert(varchar(20),shijian,120) like convert(varchar(7),shijian,120)'%' and shijian between getdate() and dateadd(d,7,getdate())”
这个结果是什么?假设今天是2008-08-12,shijian字段的值是2008-08-11,“convert(varchar(20),shijian,120) like convert(varchar(7),shijian,120)'%'”的结果是:“2008-08-11 13:40:20 like '2008-08%'”,实际上是8月整月的时间都满足这个条件,而后面的:“shijian between getdate() and dateadd(d,7,getdate())”,则是:“shijian between '2008-08-12' and '2008-08-19'”,而你要求的是要查“2008-08-11”至“2008-08-12”之间的数据。
热心网友
时间:2022-04-09 15:33
楼主用下面那个函数就可以解决了
--返回日期中的日期部分
select DATEPART (day, '2008-08-08')
--返回日期是周几
select DATEPART (weekday, '2008-08-08')