sqlserver 时间段查询

baidu_24211805 2015-04-16 02:30:03

这样查不出数据,
select * from aaa
where pTime>=CONVERT(VARCHAR,'2015/4/10',111) and pTime<=CONVERT(VARCHAR,'2014/4/15',111)

这样有数据
select * from aaa
where pTime>=CONVERT(VARCHAR,'2015/4/10',111)

求解sqlserver2005
...全文
227 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_24211805 2015-04-17
  • 打赏
  • 举报
回复
引用 13 楼 wuyajungogo 的回复:
[quote=引用 9 楼 czfxwpy 的回复:] pTime>=CONVERT(VARCHAR,'2015/4/10',111) and pTime<=CONVERT(VARCHAR,'2014/4/15',111) 这句不觉得矛盾吗? 翻译一下就是时间大于2015年4月10日,且时间小于等于14年4月15日,哥,这不是空白时间吗? 咋会取到数
这是正解。楼主眼拙了[/quote] 汗,后面时间写成2014了
无涯大者 2015-04-16
  • 打赏
  • 举报
回复
sql 时间转换格式 convert(varchar(10),字段名,转换格式) sql 时间转换格式 convert(varchar(10),字段名,转换格式) 供参考!
一枚大帅哥 2015-04-16
  • 打赏
  • 举报
回复
引用 9 楼 czfxwpy 的回复:
pTime>=CONVERT(VARCHAR,'2015/4/10',111) and pTime<=CONVERT(VARCHAR,'2014/4/15',111) 这句不觉得矛盾吗? 翻译一下就是时间大于2015年4月10日,且时间小于等于14年4月15日,哥,这不是空白时间吗? 咋会取到数
这是正解。楼主眼拙了
Neo_whl 2015-04-16
  • 打赏
  • 举报
回复
如九楼,估计是楼主笔误了
卖水果的net 版主 2015-04-16
  • 打赏
  • 举报
回复
pTime 是什么数据类型?
zbdzjx 2015-04-16
  • 打赏
  • 举报
回复
如果表中只有“2015-04-15 14:42:10.000”这一条记录的话,第一条SQL语句肯定不会返回结果,第二条SQL语句会返回这条记录。 CONVERT(VARCHAR,'2014/4/15',111)这一句会返回“2015-04-15 00:00:00.000”这样的结果,所以第一条SQL语句肯定没结果。 如果pTime是DateTime类型,那就用下面的语句:
select * from aaa
where convert(varchar, pTime,111)>='2015/04/10' and convert(varchar, pTime,111)<='2014/04/15'
czfxwpy 2015-04-16
  • 打赏
  • 举报
回复
pTime>=CONVERT(VARCHAR,'2015/4/10',111) and pTime<=CONVERT(VARCHAR,'2014/4/15',111) 这句不觉得矛盾吗? 翻译一下就是时间大于2015年4月10日,且时间小于等于14年4月15日,哥,这不是空白时间吗? 咋会取到数
Neo_whl 2015-04-16
  • 打赏
  • 举报
回复

--要看你的pTime格式,精度有要求的话可以这样
select * from aaa
where pTime between CONVERT(datetime,'2015/4/10') and CONVERT(datetime,'2014/4/15 23:59:999',)
freecodex 2015-04-16
  • 打赏
  • 举报
回复
引用 5 楼 u010024618 的回复:
引用 2 楼 baidu_24211805 的回复:
2015-04-15 14:42:10.000 [quote=引用 1 楼 u010024618 的回复:] 把表aaa中pTime时间格式贴出来。 另外,这两个语句也不是等价的
pTime是一个DateTime类型 ,2015/4/10或者2015/4/15是Date类型。 把后面的部分(红色标记)加1天,然后去掉等于 select * from aaa where pTime>=CONVERT(VARCHAR,'2015/4/10',111) and pTime < CONVERT(VARCHAR,'2014/4/16',111)[/quote] select * from aaa where pTime>=CONVERT(VARCHAR,'2015/4/10',111) and pTime < CONVERT(VARCHAR,'2015/4/16',111)[/quote]
freecodex 2015-04-16
  • 打赏
  • 举报
回复
引用 4 楼 baidu_24211805 的回复:
试过了没数据 [quote=引用 3 楼 u011015550 的回复:]

--try this
select * from aaa
where pTime between CONVERT(datetime,'2015/4/10') and CONVERT(datetime,'2014/4/15')
[/quote] 这个当然没数据了,2015-04-15 14:42:10.000 显然不在2015/4/10和2014/4/15之间
freecodex 2015-04-16
  • 打赏
  • 举报
回复
引用 2 楼 baidu_24211805 的回复:
2015-04-15 14:42:10.000
引用 1 楼 u010024618 的回复:
把表aaa中pTime时间格式贴出来。 另外,这两个语句也不是等价的
pTime是一个DateTime类型 ,2015/4/10或者2015/4/15是Date类型。 把后面的部分(红色标记)加1天,然后去掉等于 select * from aaa where pTime>=CONVERT(VARCHAR,'2015/4/10',111) and pTime < CONVERT(VARCHAR,'2014/4/16',111)
baidu_24211805 2015-04-16
  • 打赏
  • 举报
回复
试过了没数据
引用 3 楼 u011015550 的回复:

--try this
select * from aaa
where pTime between CONVERT(datetime,'2015/4/10') and CONVERT(datetime,'2014/4/15')
Neo_whl 2015-04-16
  • 打赏
  • 举报
回复

--try this
select * from aaa
where pTime between CONVERT(datetime,'2015/4/10') and CONVERT(datetime,'2014/4/15')
baidu_24211805 2015-04-16
  • 打赏
  • 举报
回复
2015-04-15 14:42:10.000
引用 1 楼 u010024618 的回复:
把表aaa中pTime时间格式贴出来。 另外,这两个语句也不是等价的
freecodex 2015-04-16
  • 打赏
  • 举报
回复
把表aaa中pTime时间格式贴出来。 另外,这两个语句也不是等价的

34,591

社区成员

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

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