【问题标题】:How can i get client system current datetime from sql instance?如何从 sql 实例获取客户端系统当前日期时间?
【发布时间】:2015-04-16 09:20:16
【问题描述】:

Sql server getdate() 函数获取服务器当前日期时间,如何从 sql server 实例中获取客户端系统当前日期时间?

我们的一个客户使用一个数据库为多个公司在不同时区运营,这是一个包含许多表、过程、函数的巨大数据库,getdate() 函数被用作许多区域的默认值。

【问题讨论】:

标签: datetime timezone client getdate


【解决方案1】:

你不能。 SQL Server 不知道调用它的客户端的时间。

考虑改用getutcdate()。在您的数据库中独占使用 UTC,然后在应用层的时区之间进行转换。

如果您觉得需要在数据库本身中进行时区转换,则需要第三方解决方案,例如我的SQL Server Time Zone Support 包。

【讨论】:

  • 感谢Matt Johnson先生的回答,但我相信必须有解决方案,我使用的是Sql server客户端服务器应用程序,每个节点都会安装sql客户端。
  • 客户端无关紧要。 SQL Server 没有会话时区的概念。其他数据库也有(OracleMySQLPostgres 等)。但是 SQL Server 没有这样的概念。
【解决方案2】:

我也有同样的问题。我找到了这个链接: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/290a0085-47a5-48ab-9557-1b59ee269a40/call-getdate-from-linked-server?forum=transactsql

declare @rmt_time datetime;
exec('SET ? = CURRENT_TIMESTAMP', @rmt_time OUTPUT) at [remote_server];
select CURRENT_TIMESTAMP as local_time, @rmt_time as rmt_time;

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 2013-08-23
    • 2011-07-02
    相关资源
    最近更新 更多