2017-01-22 23 views
0

我有我的代碼問題。我想顯示每一個誰被錄用的員工在1994年顯示在1994年僱傭的每位員工的姓氏和僱用日期

我試着用這些代碼來執行的LAST_NAMEHIRE_DATE但它不工作的結果是LAST_NAMEHIRE_DATE之間的空白。

這裏是我的表,代碼:

CREATE TABLE EMPLOYEES 
    ( 
    EMPLOYEE_ID INT, 
    FIRST_NAME VARCHAR(20), 
    LAST_NAME VARCHAR(25), 
    EMAIL VARCHAR(25), 
    PHONE_NUMBER VARCHAR(20), 
    HIRE_DATE DATETIME, 
    JOB_ID VARCHAR(10), 
    SALARY DECIMAL(8,2), 
    COMMISSION_PCT DECIMAL(2,2), 
    MANAGER_ID INT, 
    DEPARTMENT_ID INT 
    ); 


SELECT LAST_NAME, datepart(year,HIRE_DATE) FROM EMPLOYEES 
WHERE datediff (YEAR,HIRE_DATE,GETDATE) = 1994 

這裏是我的表的圖像: enter image description here

+0

你DATEDIFF功能,實際上,詢問誰是1994年以前 –

回答

2

試試這個:

SELECT last_name, hire_date FROM employees 
WHERE year(hire_date) = 1994 

使用的功能,但是,將禁止查詢優化器使用hire_date列上的任何索引。

所以,這應該更好的工作:

SELECT last_name, hire_date FROM employees 
WHERE hire_date >= '1994-01-01' and hire_date < '1995-01-01' 
+2

你永遠不應該在這樣的領域使用功能錄用,這讓在非SARGable。正確的方法是'hire_date> ='19940101'和hire_date <'19950101'' –

+0

@JamesZ你說得對。感謝您的評論。 – GurV

+0

@GurV謝謝。非常 。在使用> =從1994年開始執行,並把<確保它不會執行1995年所有1994 – Sharkweb

相關問題