select *
from employee
where DATEPART(MM ,empDOJ) + DATEPART(yy,empDOJ) < 2013 + 5
我想從表中的「員工」員工詳細其中加入員工的日期小於2013年5月,但上面的查詢工作不正常而「empdoj」是迄今爲止在SQL如何在sql server的搜索語句中使用組合日期部分?
select *
from employee
where DATEPART(MM ,empDOJ) + DATEPART(yy,empDOJ) < 2013 + 5
我想從表中的「員工」員工詳細其中加入員工的日期小於2013年5月,但上面的查詢工作不正常而「empdoj」是迄今爲止在SQL如何在sql server的搜索語句中使用組合日期部分?
SELECT *
FROM EMPLOYEE
WHERE EMPDOJ < '2013-05-01'
正確的方式這樣做將是
select *
from employee
where empDOJ < convert(date, '20130501', 112)
但是你可以使用字符串「20130501」或「2013年5月1日」,因爲當你把它比作日期列,SQL Server將根據data type priorities轉換數據類型。由於date
類型的優先級比varchar
類型,SQL將轉換varchar
到date
含蓄:
select *
from employee
where empDOJ < '20130501'
注意,使用你的列函數使用此列的索引阻止,所以當你寫在那裏datepart(MM ,empDOJ) = 5
指數(如果你有索引empDOJ
列)將不會被使用。