【问题标题】:SQL script for incrementing dates用于递增日期的 SQL 脚本
【发布时间】:2011-04-15 00:33:42
【问题描述】:

我不确定如何制作一个自动增加数据库中所有日期的脚本。我被问到日期是否是星期五,脚本需要将下一个营业日期增加到星期一,所以我需要在脚本中添加一些逻辑。

这可以用 C# 或任何其他编程语言轻松完成。但是,我被要求脚本必须是自动化的,即本机 SQL 脚本 (*.sql)。我很困惑这是否可能。

【问题讨论】:

  • 根据日期表示,通常很容易:找到 DayOfWeek 等于 Friday 的行;增加 3 天。
  • 所以,您认为我可以选择星期一的列列表,将它们更新一个。那么,周二、周三等也这样做?
  • 当您“在集合中思考”时,最好将其视为一个集合操作而不是七个单独的操作。下面的 pascal 解决方案在一组操作中执行更新。

标签: sql sql-server date-arithmetic


【解决方案1】:
UPDATE yourtable
SET yourdate = dateadd(dd, 3, yourdate)
WHERE datepart(weekday,yourdate)=6

您可以随意操作 WHERE 子句。它将为您的数据库中与您的 WHERE 子句相对应的每个日期添加 3 天。

【讨论】:

  • 请注意在服务器设置中检查工作日 6 是否为星期五。或者,您可以使用DATENAME(WEEKDAY, yourdate) = 'Friday' - 再次注意使用哪种语言设置。
  • 更新 yourtable SET yourdate = dateadd(dd, CASE datepart(weekday,yourdate) WHEN 6 THEN 3 ELSE 1 END, yourdate)
  • 谢谢,它有效。你真是个天才,没想到会有这样优雅的解决方案。
猜你喜欢
  • 1970-01-01
  • 2014-02-12
  • 1970-01-01
  • 2023-03-05
  • 2021-02-20
  • 2013-05-26
  • 2013-02-08
  • 2017-06-01
  • 2022-01-18
相关资源
最近更新 更多