sqlserver 我想取:指定起始日期和结束日期 取出从起始日期开始到结束日期每天21:30-第二天6:50的数据
发布网友
发布时间:2022-04-10 10:24
我来回答
共2个回答
懂视网
时间:2022-04-10 14:45
在数据库里between用法,between A and B 是包含A不包含B。
且必须是A小于B才行!!!比如,between 1 and 10是大于等于1到10不包括10的范围,但如果你写的是between 10 and 1 ,当你输入1-10的数字时是判断为错的,因为它先跟10对比发现小于10就不会进入了!!!
SQLServer---between
标签:不包含 tween server 包括 log 大于等于 div blog 数据
热心网友
时间:2022-04-10 11:53
指定日期就不用说了吧?
解决问题自己要记得换一种方式思考,不要把自己固定死了,时间是晚上9点半到早上6点50之间的需要,也就是说其他的不需要;可以使用排除法将早上6点50之后到晚上9点半之前的排除出去不就行了;
正向思维demo代码:
select * from sell_orders
where convert(varchar(10),sellsdate,102) between '2016.10.10' and '2016.10.31'
and (convert(varchar(10),sellsdate,108) between '21:30:00' and '23:59:59'
or convert(varchar(10),sellsdate,108) between '00:00:00' and '06:50:00')
反向思维demo代码:
select * from sell_orders
where convert(varchar(10),sellsdate,102) between '2016.10.10' and '2016.10.31'
and not (convert(varchar(10),sellsdate,108) between '06:50:01' and '21:30:01')
追问嗯嗯谢谢了兄弟 这个我能写出来 我想要的是:第一天21:30~第二天6:50作为一组算作第一天的销售 而不是第一天0:00~6:50加上第一天21:30~23:59:59算作第一天 这个分组应该是按什么分组呢 最后的结果就是:第一天的总销售额(第一天21:30~第二天6:50的总销售额)、第二天的总销售额(第二天21:30~第三天6:50的总销售额)……
追答那你就编个号来分组,然后把对应时间的数据存到一个临时表里,做法也简单,做个存储过程,传入开始日期,然后直接返回开始日期当天的21:30到0点的数据和第二天的0点到6点50的数据就可以了。