SqlServer 按时间段查询问题
百度的资料,保存下来:
在写按时间段查询的sql语句的时候一般我们会这么写查询条件:
wheredate>='2010-01-01'anddate<='2010-10-1'
但是在实执行Sql时些语句会转换成这样:
wheredate>='2010-01-010:00:00'anddate<='2010-10-1:0:00:00',再看这个条件的话,也许就会有些明白,
那就是'2010-10-10:00:00'之后的数据例如('2010-10-1:08:25:00')查不到,也就是说2010-10-1的数据查不到。
知道原因了可以修改查询条件为:
wheredate>='2010-01-01'anddate<='2010-10-123:59:59'或wheredate>='2010-01-01'anddate<='2010-10-2'
某个表某个字段是Datetime型以"YYYY-MM-DD00:00:00"存放
(1)、例如数据
2009-01-2221:22:22
2009-01-2219:21:11
2009-01-2223:10:22
(2)、用select*fromTABLEwheredatebetween'2009-1-22'And'2009-1-22',想查日期为2009-1-22的记录,结果查不到
(3)、问题原因
短日期类型默认Time为00:00:00,所以当使用between作限制条件时,就相当于between'2009-1-2200:00:00'and'2009-1-2200:00:00',因此就查不出数据。
(4)、解决方法
--方案一:对数据库里面的字段进行日期格式转换 select*fromtbwhereconvert(varchar(10),riqi,120)='2009-01-22' --方案二:给日期补全时分秒 select*fromtbwhereriqibetween'2009-01-2200:00:00'and'2009-01-2223:59:59' --结果 /**//* idriqi ---------------------------------------------------------- A2009-01-2221:22:22.000 B2009-01-2219:21:11.000 C2009-01-2223:10:22.000 (所影响的行数为3行) */
总结
以上所述是小编给大家介绍的SqlServer按时间段查询问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。