隐式地在表上的所有Select语句上应用函数 - SQL Server

时间:2012-06-27 03:07:05

标签: sql-server-2008 sql-server-2008-r2

是否可以自动将某个功能(用户定义/系统)应用于所选列,可以在模式级别绑定它。

我的方案是我自动保存每个表中保存记录的时间戳,为此我使用getdate()作为这些列的默认值,它工作正常,直到我们拥有自己的主机。但是从现在开始我们转向共享主机并且不知道将来在哪个时区放置服务器,我使用GETUTCDATE()来获取GMT时间。

由于已经有很多程序/功能,我正在寻找一些我不需要将UTC时间明确转换为当地时间的东西。

这样我的Select * from MyTable就可以使用我创建的函数在固定的时区给我时间。

让我知道它是否有可能。

感谢。

1 个答案:

答案 0 :(得分:0)

目前还不清楚你想做什么,但是没有办法用SELECT语句替换其他内容所要求的内容:你在查询中要求的是你得到的。除非用具有相同名称的视图替换表,但这可能不是最好的方法。

使用视图或函数仍然意味着您无论如何都必须更改代码,那么为什么不将UPDATE所有数据都转换为UTC时间然后在应用程序代码中进行转换? SQL Server不知道客户端在什么时区,因此无法在服务器端可靠地进行转换。除非客户端可能将本地时区作为参数或CONTEXT_INFO发送到服务器,但是没有太大意义,因为无论如何在客户端中执行它会更简单。

当然,在应用程序中处理所有这些将为您提供更加灵活,强大的解决方案。