sql 判断日期是否相等问题

selectdistinctnnp.UserIDas'员工编号',nnp.UserNameas'员工姓名',nnp.INTIMEas'上班时间',nnp.IFWorker... select distinct nnp.UserID as '员工编号',nnp.UserName as '员工姓名',nnp.INTIME as '上班时间',nnp.IFWorker as '类别' from #NotnullPunch as nnp , tb_Overtime as tot where datepart(Hour,nnp.INTIME)=17 and convert(varchar(10),nnp.INTIME,120) <>tot.O_Date 在写再看看我这句话,为什么我写没写这句话(and convert(varchar(10),nnp.INTIME,120) <>tot.O_Date)的结果是一样的呢?
tot.O_Date的显示形式为:'2008-08-07'
我查出的结果中有这种现象nnp.INTIME的值为 2008-07-16
但我的tb_Overtime表中tot.O_Date 字段的值有为2008-07-16的行啊, 它应该把含有 2008-07-16这样的行剔除掉才对啊
展开
 我来答
chenjin99
2008-08-09 · TA获得超过7062个赞
知道大有可为答主
回答量:1304
采纳率:100%
帮助的人:1916万
展开全部
我看你的算法写得没有什么毛病。即使是这句 也是字符串与字符串的比较。

写不写这句都一样,只能说明,所查的数据中本来就 不存在 日期与tot.O_Date的日期相同,而时间在 17:00到18:00之间的数据。
-------------
做个试验就可以看出一些东东来了:
加上这句“convert(varchar(10),nnp.INTIME,120) <>convert(varchar(10),tot.O_Date,120) ”是为了剔除一些数据,那就可以先查一些究竟是哪些数据将被剔除嘛,只要在那语句中放上这句,但把其中的“<>”改为“=”。
查一下看,结果究竟是什么数据。

结果可能是空的,那就说明加了这句与不加对现有数据来说是一样的;
结果也可能有数据,但结果与你想象的不同,那就要查一下前面的语句了,比如临时表#NotnullPunch 以及表 tb_Overtime中的数据情况。
佳乐比海
2008-08-08 · TA获得超过165个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:0
展开全部
像我查询公司所有员工和明天之前公司所有的员工个数是一样的同个道理。
加这个条件不会对原来的结果集产生影响。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c288a7d
2008-08-08
知道答主
回答量:11
采纳率:0%
帮助的人:5万
展开全部
在时间比较时 尽量两边都用相同的格式进行格式化
然后比较
convert(varchar(10),nnp.INTIME,120) <>convert(varchar(10),tot.O_Date,120)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式