离职 和 注销为2个逻辑字段,用下面的语句查不出入厂时间大于2006-8-25的记录,真是太奇怪了,明明表中有许多条 离职 和 注销为空且大于2006-8-25的记录。是SQL的语法不对吗?
select * from 人事_名单 where 入厂时间>='2006-8-1' and 入厂时间<'2006-9-10' and not(离职 = '1') and not(注销 = '1')
select * from 人事_名单 where 入厂时间>='2006-8-1' and 入厂时间<'2006-9-10' and not(离职 = '1') and not(注销 = '1')
*
from
人事_名单
where
入厂时间>='2006-8-1'
and
入厂时间<'2006-9-10'
and
离职!='1' -- 离职<>'1'
and
注销!='1' -- 注销<>'1'
from 人事_名单
where 入厂时间>='2006-8-1' and 入厂时间<'2006-9-10' and 离职 <> '1') and 注销 <> '1'
但是最好写成
select
*
from
人事_名单
where
入厂时间>='2006-8-1'
and 入厂时间<'2006-9-10'
and (not(离职 = '1'))
and (not(注销 = '1'))
and 离职 <> '1'
and 注销 <> '1'
最好换成datediff函数而且是否为空应该是null判断吧?
try一下
select * from 人事_名单 where datediff(d,入厂时间,'2006-8-1')<=0 and datediff(d,入厂时间,'2006-9-10')>0
and 离职 is null
and 注销 is null