查询每个员工的出生日期

时间:2017-04-08 18:25:21

标签: mysql sql date

我尝试了这段代码。但它没有用。(我使用的是NetBeans内部数据库)

代码是 -

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

错误 -

     

[例外,错误代码30,000,SQLState 42X04]列'YYYY'也是   不在FROM列表中的任何表中或出现在连接中   规范并且超出了连接规范或范围   出现在HAVING子句中,不在GROUP BY列表中。如果是这样的话   一个CREATE或ALTER TABLE语句,然后'DD'不是一个列   目标表。

3 个答案:

答案 0 :(得分:-1)

MySQL具有see doc

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

答案 1 :(得分:-1)

Assumin DOB是有效的日期列,如果你使用的是mysql,你应该使用year(),month()和day()而不是datepart ..

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

(如果是sqlserver,则为datepart)

并为每位员工提供

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

答案 2 :(得分:-1)

MySQL有一个专门的函数,它返回工作日的索引。文档说:

#include <stdio.h>

void 
print_string(char *str) 
{
    printf("%s\n", str);
}

所以你基本上可以在你的查询中使用它,然后根据索引操作输出。像这样:

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 

如果您希望从查询本身获取输出,可以使用CASE语句:

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

希望它有效!!祝你好运!