SQL:怎样判断一个时间是否在两个时间之间?

时间:2022-07-25 00:45:19
时间字段为time1,要判断time1是否在7:30-15:30之间(7:30<=time1<16:30),有没有比较简单一点的方法?

下面的语句太长,而且字符串转换也比较速度也很慢
CONVERT(varchar(12),Time,108 )>='07:30:00' AND CONVERT(varchar(12),Time,108)<'16:30:00'

大家都知道DateTime其实是一个表示自1900年以来的天数,能不能去掉整数部分来比较呢?
类似 (float)time1-(int)(float)time1 的方法怎么写呢?
我SQL是个菜鸟,希望个为前辈指点

10 个解决方案

#1


好像没有其他方法,如果是2008的话,可以用CONVERT(TIME,列名) BETWEEN XXX AND XXX这样.就没那么长了.

#2


CONVERT(varchar(12),Time,108 )between '07:30:00' AND '16:30:00'

#3


between可能会有重复记录,它等价与 7:30<=time1<=16:30

#4


我要列出的是早班 中班 晚班 ,如果一个人的上班时间刚好是16:30,那他会同时满足早班和中班的条件

#5


引用 4 楼 socg 的回复:
我要列出的是早班 中班 晚班 ,如果一个人的上班时间刚好是16:30,那他会同时满足早班和中班的条件

不知道你具体是怎么设计的。

但是上班时间肯定是先前定死的,如果上班时间是 16:30,那么肯定是中班的时间了。
如果是看打卡时间来确定上的是哪个班,那么判断范围不用那么广,标准时间往后推1小时啥的就行。

#6


客户的要求,没办法啊。。。
实际上是煤矿车辆的下井躺数,一个车,早班可以多次上下井,只要是在16:30之前下井的车都要统计到早班里面。。。。

between确实有这个隐患,我不敢怎么用它,假如一个人刚好是16:30打的卡,那会同时满足两个条件,这样汇总出来的次数就和明细实际次数人数不一致了

#7


SQL:怎样判断一个时间是否在两个时间之间?

#8


客户的要求让人吐血,横向的“用车单位”不是每个都统计,他们专门的点出几个来要你统计,搞的代码都写死了,左边的车型如果是特种车还不能统计次数,要统计小时。。。

真想铲他,这种要求怎么婉言拒绝拒绝啊。。。

#9


不要婉言拒绝。。,直接回绝!否则你只能难受 SQL:怎样判断一个时间是否在两个时间之间?

#10


convert(varchar(12),Time,108 )between '07:30:01' and '16:30:00'

#1


好像没有其他方法,如果是2008的话,可以用CONVERT(TIME,列名) BETWEEN XXX AND XXX这样.就没那么长了.

#2


CONVERT(varchar(12),Time,108 )between '07:30:00' AND '16:30:00'

#3


between可能会有重复记录,它等价与 7:30<=time1<=16:30

#4


我要列出的是早班 中班 晚班 ,如果一个人的上班时间刚好是16:30,那他会同时满足早班和中班的条件

#5


引用 4 楼 socg 的回复:
我要列出的是早班 中班 晚班 ,如果一个人的上班时间刚好是16:30,那他会同时满足早班和中班的条件

不知道你具体是怎么设计的。

但是上班时间肯定是先前定死的,如果上班时间是 16:30,那么肯定是中班的时间了。
如果是看打卡时间来确定上的是哪个班,那么判断范围不用那么广,标准时间往后推1小时啥的就行。

#6


客户的要求,没办法啊。。。
实际上是煤矿车辆的下井躺数,一个车,早班可以多次上下井,只要是在16:30之前下井的车都要统计到早班里面。。。。

between确实有这个隐患,我不敢怎么用它,假如一个人刚好是16:30打的卡,那会同时满足两个条件,这样汇总出来的次数就和明细实际次数人数不一致了

#7


SQL:怎样判断一个时间是否在两个时间之间?

#8


客户的要求让人吐血,横向的“用车单位”不是每个都统计,他们专门的点出几个来要你统计,搞的代码都写死了,左边的车型如果是特种车还不能统计次数,要统计小时。。。

真想铲他,这种要求怎么婉言拒绝拒绝啊。。。

#9


不要婉言拒绝。。,直接回绝!否则你只能难受 SQL:怎样判断一个时间是否在两个时间之间?

#10


convert(varchar(12),Time,108 )between '07:30:01' and '16:30:00'