select *
from employee
where DATEPART(MM ,empDOJ) + DATEPART(yy,empDOJ) < 2013 + 5
我想从表“employee”中获取员工详细信息,其中员工的加入日期小于 2013 年 5 月,但上述查询无法正常工作,“empdoj”是 sql 中的日期
select *
from employee
where DATEPART(MM ,empDOJ) + DATEPART(yy,empDOJ) < 2013 + 5
我想从表“employee”中获取员工详细信息,其中员工的加入日期小于 2013 年 5 月,但上述查询无法正常工作,“empdoj”是 sql 中的日期
这样做的正确方法是
select *
from employee
where empDOJ < convert(date, '20130501', 112)
但是您可以使用字符串 '20130501' 或 '2013-05-01' 因为当您将其与日期列进行比较时,SQL Server 将根据数据类型优先级转换数据类型。由于date
type 的优先级高于varchar
type,SQL 将隐式转换varchar
为:date
select *
from employee
where empDOJ < '20130501'
请注意,在列上使用函数会阻止在此列上使用索引,因此当您编写 wheredatepart(MM ,empDOJ) = 5
索引(如果您在empDOJ
列上有索引)时,将不会使用。
SELECT *
FROM EMPLOYEE
WHERE EMPDOJ < '2013-05-01'