【发布时间】:2016-02-12 20:49:02
【问题描述】:
这是一个现有的应用程序,有大约 1400 个存储过程,是多年前构建的。我们已经使用 GetDate() 来获取许多存储过程中的当前日期。
现在我们想用“老化”场景测试这个应用程序。我们的 DBA 告诉我们 GetDate() 函数从操作系统派生日期。因此,如果我们需要 getdate() 来返回未来日期,我们需要更改操作系统日期。数据中心的人不会让我们更改操作系统日期。
一个明显的解决方案是创建一个单独的 GetApplicationDate() 函数,该函数返回我们想要的任何日期,并查看所有存储过程并使用这个新的自定义函数更新它们。
我想避免更改 ~1400 个存储过程并覆盖 SQL Server 提供的 GetDate() 函数。这可能吗?
谢谢, 加亚
【问题讨论】:
-
您的 DBA 是对的。找人取代“数据中心的人”,为您节省数小时的工作时间。但是,请记住操作系统日期是本地日期 - 因此,如果您在西方成本(或印度)或任何地方,未来的时间可能就像本地化更改一样简单。
-
没有。 GetDate 返回当前系统日期时间。它是 sql server 中的本机代码,因此您无法更改它。对于此类测试,您必须更改当前系统时间。
-
同意前 2 个 cmets。如果您不需要进行手术并且可以用您的自定义函数替换每次出现的 GETDATE(),那么可以使用复制/替换工具或更新系统表来快速完成。
-
@Hogan DBA总是是对的! ;-)
-
@JoeStefanelli - 在 IT Poker 中,DBA 的排名超过了数据中心专家。
标签: sql-server getdate