SQL查询,以';yy年mm月dd日';
我想以“yy年mm月dd日”的格式查询员工的经验SQL查询,以';yy年mm月dd日';,sql,sql-server,Sql,Sql Server,我想以“yy年mm月dd日”的格式查询员工的经验 SELECT EMPID, EMPNAME, DEPARTMENT, DESIGNATION, DATEDIFF(YEAR, DOJ, GETDATE()) AS EXPERIENCE, EMPSTATUS AS JOB_STATUS FROM EMPLOYEE DOJ-数据库中用于保存员工“加入日期”的字段。 这是一个仅返回年经验的查询。如何修改它?用于测试 SELECT EMPID, EMPNAME, DEPAR
SELECT EMPID, EMPNAME, DEPARTMENT, DESIGNATION, DATEDIFF(YEAR, DOJ, GETDATE()) AS EXPERIENCE,
EMPSTATUS AS JOB_STATUS
FROM EMPLOYEE
DOJ-数据库中用于保存员工“加入日期”的字段。
这是一个仅返回年经验的查询。如何修改它?用于测试
SELECT
EMPID, EMPNAME, DEPARTMENT, DESIGNATION,
convert(varchar(3),DATEDIFF(MONTH, DOJ, GETDATE())/12) +' years '+
convert(varchar(2),DATEDIFF(MONTH, DOJ, GETDATE()) % 12)+ ' months'
AS EXPERIENCE,
EMPSTATUS AS JOB_STATUS
FROM EMPLOYEE
SELECT EMPID, EMPNAME, DEPARTMENT, DESIGNATION,
cast(floor(experience / 365) as varchar) + ' years ' +
cast(floor(experience % 365 / 30) as varchar) + ' months ' +
cast(experience % 30 as varchar) + ' days' as experience,
EMPSTATUS AS JOB_STATUS
FROM (select *, datediff(DAY, doj, getdate()) as experience
from employee) t
用于测试
SELECT EMPID, EMPNAME, DEPARTMENT, DESIGNATION,
cast(floor(experience / 365) as varchar) + ' years ' +
cast(floor(experience % 365 / 30) as varchar) + ' months ' +
cast(experience % 30 as varchar) + ' days' as experience,
EMPSTATUS AS JOB_STATUS
FROM (select *, datediff(DAY, doj, getdate()) as experience
from employee) t
将Emp_joiningDate视为列 选择DATEDIFF(year,Emp_joiningDate,GETDATE())作为年份
DATEDIFF(month, Emp_joiningDate, GETDATE()) - DATEDIFF(year, '1/2/1999', GETDATE()) * 12 AS Months,
DATEDIFF(day, Emp_joiningDate, getdate())- DATEDIFF(month, '1/2/1999',
GETDATE()) - DATEDIFF(year, '1/2/1999', GETDATE()) * 365 as Days
将Emp_joiningDate视为列 选择DATEDIFF(year,Emp_joiningDate,GETDATE())作为年份
DATEDIFF(month, Emp_joiningDate, GETDATE()) - DATEDIFF(year, '1/2/1999', GETDATE()) * 12 AS Months,
DATEDIFF(day, Emp_joiningDate, getdate())- DATEDIFF(month, '1/2/1999',
GETDATE()) - DATEDIFF(year, '1/2/1999', GETDATE()) * 365 as Days
DECLARE@FromDate-DATETIME='2013-12-01 23:59:59.000',
@ToDate DATETIME='2016-08-30 00:00:00.000',
声明@MONTHS INT
设置@Months=DATEDIFF(MM、@FROMDATE、@TODATE)
如果(DATEPART(MM,@FromDate)DECLARE@FromDate DATETIME='2013-12-01 23:59:59.000',
@ToDate DATETIME='2016-08-30 00:00:00.000',
声明@MONTHS INT
设置@Months=DATEDIFF(MM、@FROMDATE、@TODATE)
IF(DATEPART(MM,@FromDate)创建函数[dbo]。[fn_getemployeeperiod]
(
@出生日期时间
)
返回VARCHAR(100)
作为
开始
声明@currentdatetime日期时间;
宣布@years INT;
申报@months INT;
声明@days INT;
声明@currentMonthdays INT;
声明@result VARCHAR(100);
设置@currentdatetime=GETDATE();--当前日期时间
IF ( @dateofbirth <= GETDATE() )
BEGIN
SELECT @years = DATEDIFF(YEAR, @dateofbirth, @currentdatetime); -- To find Years
SELECT @months = DATEDIFF(MONTH, @dateofbirth,
@currentdatetime) - ( DATEDIFF(YEAR,
@dateofbirth,
@currentdatetime)
* 12 );
SELECT @days = DATEPART(d, @currentdatetime) - DATEPART(d,
@dateofbirth);-- To Find Days
SELECT @currentMonthdays = ( SELECT DAY(DATEADD(DD, -1,
DATEADD(mm,
DATEDIFF(mm, 0,
GETDATE()), 0)))
);
IF ( @months < 0 )
BEGIN
SET @months = 12 + @months;
SET @years = @years - 1;
END;
IF ( @days < 0 )
BEGIN
SET @days = @currentMonthdays + @days;
IF(@months<>0)
begin
SET @months = @months - 1;
END
ELSE
BEGIN
SET @years = @years - 1;
SET @months = 11;
end
END;
创建函数[dbo]。[fn_getEmployePeriod]
(
@出生日期时间
)
返回VARCHAR(100)
作为
开始
声明@currentdatetime日期时间;
宣布@years INT;
申报@months INT;
声明@days INT;
声明@currentMonthdays INT;
声明@result VARCHAR(100);
设置@currentdatetime=GETDATE();--当前日期时间
IF ( @dateofbirth <= GETDATE() )
BEGIN
SELECT @years = DATEDIFF(YEAR, @dateofbirth, @currentdatetime); -- To find Years
SELECT @months = DATEDIFF(MONTH, @dateofbirth,
@currentdatetime) - ( DATEDIFF(YEAR,
@dateofbirth,
@currentdatetime)
* 12 );
SELECT @days = DATEPART(d, @currentdatetime) - DATEPART(d,
@dateofbirth);-- To Find Days
SELECT @currentMonthdays = ( SELECT DAY(DATEADD(DD, -1,
DATEADD(mm,
DATEDIFF(mm, 0,
GETDATE()), 0)))
);
IF ( @months < 0 )
BEGIN
SET @months = 12 + @months;
SET @years = @years - 1;
END;
IF ( @days < 0 )
BEGIN
SET @days = @currentMonthdays + @days;
IF(@months<>0)
begin
SET @months = @months - 1;
END
ELSE
BEGIN
SET @years = @years - 1;
SET @months = 11;
end
END;
请编辑您的问题,为您使用的数据库添加标记(猜测sql server
)。您在员工表中显示为经验的字段的实际名称是什么请编辑您的问题,为您使用的数据库添加标记(猜测sql server
)。您在员工表中显示为经验的字段的实际名称是什么?我收到一个错误,如“CONCAT”不是可识别的函数名。我使用的是SQL Server 2008,很抱歉我在问题中没有提到它。@sanuj更新了答案和SQL FIDLE。我收到一个错误,如“CONCAT”不是可识别的函数名。我正在使用SQL Server 2008,很抱歉我在问题中没有提到它。@sanuj更新了答案和SQL FIDLE。