2014-04-02 93 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