2017-04-08 39 views
1

的員工日日我想這code.But它不工作。(我使用NetBeans內部數據庫)查詢找出每個出生

代碼是 -

SELECT DATEPART(yyyy,DOB) AS BirthYear, 
DATEPART(mm,DOB) AS BirthMonth, 
DATEPART(dd,DOB) AS BirthDay 
FROM Employees 
WHERE EmpId=1 

錯誤 -

[異常,錯誤代碼30000,的SQLState 42X04]柱「YYYY」爲 未在任何表FROM列表或加入 說明書內出現,是加入的specifica的範圍之外或 出現在HAVING子句中,不在GROUP BY列表中。如果這是 CREATE或ALTER TABLE語句,那麼'DD'不是 目標表中的列。

+0

你正在使用哪個db? – scaisEdge

+0

我正在使用mysql。 –

+0

我已經發布並回答..mysql使用特定函數asyear(),month()和day()來檢索您正在查找的日期時間列。 – scaisEdge

回答

-1

Assumin DOB是valida日期列,如果你正在使用MySQL,你應該使用一年()月()和日(),而不是日期部分..

SELECT year(DOB) AS BirthYear, 
     month(DOB) AS BirthMonth, 
     day(DOB) AS BirthDay 
FROM Employees 
WHERE EmpId=1 

(日期部分如果對於SQLSERVER)

和FO r每個員工你可以

SELECT EmpId, 
     year(DOB) AS BirthYear, 
     month(DOB) AS BirthMonth, 
     day(DOB) AS BirthDay 
FROM Employees 
0

MySQL有這些功能,see doc

SELECT 
    YEAR(DOB)AS BirthYear, 
    MONTH(DOB)AS BirthMonth, 
    DAY(DOB)AS BirthDay 
FROM 
    Employees 
WHERE 
    EmpId = 1 
-1

MySQL有一個專門的函數,返回星期幾的索引。該文檔說:

DAYOFWEEK(date) 

Returns the weekday index for date (1 = Sunday, 2 = Monday, …, 7 = 
Saturday). These index values correspond to the ODBC standard. 

mysql> SELECT DAYOFWEEK('2007-02-03'); 
    -> 7 

所以你基本上可以在你的查詢中使用它,並在稍後基於索引操縱輸出。事情是這樣的:

SELECT DAYOFWEEK(DOB) AS Day_of_Week, 
FROM Employees 
WHERE EmpId=1; 

如果你希望得到從查詢本身的輸出,你可以使用一個CASE語句:

SELECT CASE DAYOFWEEK(DOB) 
     WHEN 1 THEN 'SUNDAY' 
     WHEN 2 THEN 'MONDAY' 
     --- 
    END AS Day_of_Week 
FROM Employees 
WHERE EmpId=1; 

希望工程!祝你好運!