PDO& MSSQL - 如何更改每个连接的时区

时间:2017-05-25 11:19:38

标签: php sql sql-server-2012 timezone

我希望在PDO-MSSQL连接上设置时区(每个会话),以便getdate()可用于存储和返回用户的本地时间而不是服务器默认值(欧洲/伦敦)

Google为MYSQL返回了数百个结果;但没有任何MSSQL。所以看起来这是MYSQL的答案:

$ PDO-> setAttribute(PDO :: MYSQL_ATTR_INIT_COMMAND =>“SET time_zone ='Europe / London'

是否有MSSQL的等价物?

由于

克里斯

1 个答案:

答案 0 :(得分:0)

Microsoft SQL Server没有会话时区的概念,因此您的问题的答案很简单 - 否。

但是,有一些解决方案可以在SQL Server中使用时区。使用SQL Server 2016,为AT TIME ZONE添加了支持,因此可以在时区之间转换数据元素(类似于MySQL的CONVERT_TZ函数)。这虽然使用Microsoft Windows时区标识符,但不使用标准的IANA / TZDB标识符。如果您需要支持(例如您提到的Europe/London),那么您需要使用类似我的SQL Server Time Zone Support开源项目。

只有在您确实需要在数据库层进行时区转换时才需要这两种方法。在绝大多数情况下,您实际上并不需要这样做。而是在应用程序层处理时区转换。 PHP对时区有很好的支持,所以你不需要在数据库中这样做。

如果你有一个特定的场景,那就问一个新的问题(在搜索之后是否已经被问过)。