怎么会这么怪的呢?

glcity 2008-04-10 11:11:48
现有一数据表"glcity_pl"中定义一字段"pl_dt"成datetime类型,
该数据表中有一条记录存在,其中字段"pl_dt"的值为“2008-4-10 9:54:30”,
但做如下的查询,怎么会查不出这条记录呢?

select * from glcity_pl where (pl_dt - 2008-04-08) >= 0 and (pl_dt - 2008-04-16) <= 0

如果“select * from glcity_pl where (pl_dt - 2008-04-08) >= 0”这样查就可把这条记录查出来!
请问我的错误在哪呀?先谢谢了!

或者要怎么才能查出来?
...全文
63 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
glcity 2008-04-10
  • 打赏
  • 举报
回复
我这句语句还是有问题的,
select * from glcity_pl where DATEDIFF(day,pl_dt,2008-04-08) <= 0 and DATEDIFF(day,pl_dt,2008-04-16) <= 0

我们来看看语法:
DATEDIFF ( datepart , startdate , enddate )
startdate 是从 enddate 减去。如果 startdate 比 enddate 晚,返回负值。

pl_dt=“2008-4-10 9:54:30”
请看第一个查询条件“2008-4-10”比“2008-04-08”晚吧,返回负值,对的。
请看第二个查询条件“2008-4-10”比“2008-04-16”晚吗?
为什么还是返回负值呢?
glcity 2008-04-10
  • 打赏
  • 举报
回复
我这样做
select * from glcity_pl where DATEDIFF(day,pl_dt,2008-04-08) <= 0 and DATEDIFF(day,2008-04-16,pl_dt) >= 0

已解决了!
多谢zanyzyg及wgzaaa朋友的帮忙!
sweetweiwei 2008-04-10
  • 打赏
  • 举报
回复
改为select * from glcity_pl where (pl_dt - 2008-04-08) >= 0 and (pl_dt - 2008-04-16) >= 0
或者select * from b where datediff(dd,convert(char(10),pl_dt,120) , '2008-04-08') <= 0
and datediff(dd,convert(char(10),pl_dt,120), '2008-04-16') >= 0

glcity 2008-04-10
  • 打赏
  • 举报
回复
谢谢各位帮忙!!!
wgzaaa 2008-04-10
  • 打赏
  • 举报
回复
去学下数据类型吧
zanyzyg 2008-04-10
  • 打赏
  • 举报
回复



select * from glcity_pl where (pl_dt - '2008-04-08') >= 0 and (pl_dt - '2008-04-16') <= 0
zanyzyg 2008-04-10
  • 打赏
  • 举报
回复
加'2008-04-08'

或者用datediff
或者用between

34,590

社区成员

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

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