0
select * 
from employee
where DATEPART(MM ,empDOJ) + DATEPART(yy,empDOJ) < 2013 + 5 

我想从表“employee”中获取员工详细信息,其中员工的加入日期小于 2013 年 5 月,但上述查询无法正常工作,“empdoj”是 sql 中的日期

4

2 回答 2

1

这样做的正确方法是

select *
from employee
where empDOJ < convert(date, '20130501', 112)

但是您可以使用字符串 '20130501' 或 '2013-05-01' 因为当您将其与日期列进行比较时,SQL Server 将根据数据类型优先级转换数据类型。由于datetype 的优先级高于varchartype,SQL 将隐式转换varchar为:date

select *
from employee
where empDOJ < '20130501'

请注意,在列上使用函数会阻止在此列上使用索引,因此当您编写 wheredatepart(MM ,empDOJ) = 5索引(如果您在empDOJ列上有索引)时,将不会使用。

于 2013-09-24T11:09:25.220 回答
0
SELECT *
FROM EMPLOYEE
WHERE EMPDOJ < '2013-05-01'
于 2013-09-24T11:07:19.303 回答