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

socg 2013-03-07 10:14:37
时间字段为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是个菜鸟,希望个为前辈指点
...全文
2416 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
socg 2013-03-08
  • 打赏
  • 举报
回复
客户的要求让人吐血,横向的“用车单位”不是每个都统计,他们专门的点出几个来要你统计,搞的代码都写死了,左边的车型如果是特种车还不能统计次数,要统计小时。。。 真想铲他,这种要求怎么婉言拒绝拒绝啊。。。
socg 2013-03-08
  • 打赏
  • 举报
回复
socg 2013-03-08
  • 打赏
  • 举报
回复
客户的要求,没办法啊。。。 实际上是煤矿车辆的下井躺数,一个车,早班可以多次上下井,只要是在16:30之前下井的车都要统计到早班里面。。。。 between确实有这个隐患,我不敢怎么用它,假如一个人刚好是16:30打的卡,那会同时满足两个条件,这样汇总出来的次数就和明细实际次数人数不一致了
  • 打赏
  • 举报
回复
convert(varchar(12),Time,108 )between '07:30:01' and '16:30:00'
  • 打赏
  • 举报
回复
不要婉言拒绝。。,直接回绝!否则你只能难受
shoppo0505 2013-03-07
  • 打赏
  • 举报
回复
引用 4 楼 socg 的回复:
我要列出的是早班 中班 晚班 ,如果一个人的上班时间刚好是16:30,那他会同时满足早班和中班的条件
不知道你具体是怎么设计的。 但是上班时间肯定是先前定死的,如果上班时间是 16:30,那么肯定是中班的时间了。 如果是看打卡时间来确定上的是哪个班,那么判断范围不用那么广,标准时间往后推1小时啥的就行。
socg 2013-03-07
  • 打赏
  • 举报
回复
我要列出的是早班 中班 晚班 ,如果一个人的上班时间刚好是16:30,那他会同时满足早班和中班的条件
socg 2013-03-07
  • 打赏
  • 举报
回复
between可能会有重复记录,它等价与 7:30<=time1<=16:30
shoppo0505 2013-03-07
  • 打赏
  • 举报
回复
CONVERT(varchar(12),Time,108 )between '07:30:00' AND '16:30:00'
發糞塗牆 2013-03-07
  • 打赏
  • 举报
回复
好像没有其他方法,如果是2008的话,可以用CONVERT(TIME,列名) BETWEEN XXX AND XXX这样.就没那么长了.

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧