sql server时间问题

weileisheng 2019-05-28 10:17:14
我用CONVERT(varchar(12),GETDATE(),108) 来获取当前的时间点,
然后用类似CONVERT(varchar(12),GETDATE(),108) between '8:00:00' and '10:40:00' 来判断是否在这个时间段,
总感觉可奇怪呀 为啥我测试用CONVERT(varchar(12),'10:00:00',108) between '8:00:00' and '10:40:00' 就是没数据的
他这个是怎么个比较法?字符串么,
CONVERT(varchar(12),'9:00:00',108) between '8:00:00' and '9:40:00' 这样的就是有数据的,当跨度超过10点 就比较不出来了
难道是取首字符来比较十点是因为10的首字符1?
...全文
46 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weileisheng 2019-05-28
  • 打赏
  • 举报
回复
嗯 多谢各位解惑了, 昨天试了好久还纳闷为啥作业执行了 数据没变呢
lich2005 2019-05-28
  • 打赏
  • 举报
回复
IF '7:00:00' > '8:00:00'
SELECT '7点比8点大'
ELSE
SELECT '7点比8点小'
---------------------------
IF '10:00:00' > '8:00:00'
SELECT '10点比8点大'
ELSE
SELECT '10点比8点小'


楼主运行一下就明白了。
时间类型最好和时间类型比较好些,转换成字符串来比较不是很好的选择。
唐诗三百首 2019-05-28
  • 打赏
  • 举报
回复
是的, 这样写是按字符串比较大小的, 可能不够严谨, 建议用以下写法,

cast('10:00:00' as time) between cast('8:00:00' as time) and cast('10:40:00' as time)

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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