SQL Server 2008R2 将 GETDATE 结果更改为默认值

SQL Server 2008R2 alter GETDATE result as a default value

有没有办法改变 getdate() 的结果,同时仍将其用作默认值?例如。能够增加或减少 x 小时数。

情况:

德国托管服务器 (GMT+2),部分最终用户位于澳大利亚 (GMT+10)。一列使用默认 getdate() 值,因此插入德国时间。一些代码根据澳大利亚时间生成 DateTime,因此存在 8 小时的差异。

objective:

出于几个很好的原因,目的是在数据库上处理这个问题,而不是接触应用程序代码。我想在德语 getdate() 默认数据库值上增加 8 小时......或者在数据库

上以其他方式处理

您可以使用默认值使用 DATEADD() 函数将日期增加 8 小时:

create table dbo.foo
(
dateColumn datetime default (dateadd(hour,8,getdate()))
)

我没有看到任何这样的选项,而且它也不太危险。您可以在数据库中创建一个具有相同名称 GETDATE 的函数,但这需要您在调用该函数时以 dbo(或模式名称)作为前缀。

因此,您可能需要编写自己的函数并利用 GETUTCDATE() 并根据时区添加增量。