【问题标题】:Changing the year of a date in SQL在 SQL 中更改日期的年份
【发布时间】:2014-04-02 08:53:06
【问题描述】:

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

【问题讨论】:

  • 你在按程序思考。您想要的是约会并在未来找到该日期的下一个周年纪念日。不要说“我想把日期调整到今年,那么如果那个日期是过去的,我想加一年”。
  • 您使用的是哪个 DBMS?后格雷斯?甲骨文?

标签: sql date stored-procedures


【解决方案1】:

我认为这不是最优雅的解决方案,但您可以将日期分开以将其替换为当前年份。然后使用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

【讨论】:

  • @Chris 如果这个答案让您满意,请给它打上绿色的勾,这样您的问题就会从未回答的问题列表中删除。如果它不是您正在寻找的内容,请在对此答案的评论中说明需要改进的地方,以便 april4181 或其他用户知道该问题仍在寻求解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 2013-09-23
  • 1970-01-01
  • 2018-04-05
  • 1970-01-01
相关资源
最近更新 更多