2017-04-08 42 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; 

希望工程!祝你好运!