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() 并根据时区添加增量。
有没有办法改变 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() 并根据时区添加增量。