2014-04-02 66 views
1

我对编程比较陌生。我有一张桌子,桌子上有一列显示员工何时在公司工作。我正在创建一个过程,并且在该过程中,我想要将用户的开始日期替换为当前年份,然后是if语句。如果刚刚计算的日期在今天之前,则将该日期的年份更改为明年。如果问题不完全清楚或以前曾被问过,谢谢并抱歉。在SQL中更改日期的年份

+0

您正在按程序思考。你想要的是采取一个日期,并找到未来的日期的下一个周年纪念日。不要说“我想把日期调整到今年,然后*如果这个日期过去了,我想增加一年”。 –

+0

你正在使用哪些DBMS? Postgres的?甲骨文? –

回答

0

我不认为这是最优雅的解决方案,但您可以将日期分开以将其替换为当前年份。然后使用case语句将它更改为下一年,如果它已经通过。代码如下:

SELECT employee_name, 
    CASE 
     WHEN CONVERT(VARCHAR,MONTH(start_date))+'/'+CONVERT(VARCHAR,DAY(start_date))+'/'+CONVERT(VARCHAR,YEAR(getdate())) < GETDATE() THEN CONVERT(VARCHAR,MONTH(start_date))+'/'+CONVERT(VARCHAR,DAY(start_date))+'/'+CONVERT(VARCHAR,YEAR(getdate())+1) 
     WHEN CONVERT(VARCHAR,MONTH(start_date))+'/'+CONVERT(VARCHAR,DAY(start_date))+'/'+CONVERT(VARCHAR,YEAR(getdate())) >= GETDATE() THEN CONVERT(VARCHAR,MONTH(start_date))+'/'+CONVERT(VARCHAR,DAY(start_date))+'/'+CONVERT(VARCHAR,YEAR(getdate())) 
    END AS anniversary_date 
FROM Employees 
+0

@Chris如果这个答案满足你,请给它一个绿色的勾号,以便你的问题从未回答的问题列表中删除。如果它不是你正在寻找的东西,请解释什么需要改进,并对这个答案发表评论,以便4月4日或其他用户知道这个问题仍在寻求解决方案。 – mickmackusa