我希望在PDO-MSSQL连接上设置时区(每个会话),以便getdate()可用于存储和返回用户的本地时间而不是服务器默认值(欧洲/伦敦)
Google为MYSQL返回了数百个结果;但没有任何MSSQL。所以看起来这是MYSQL的答案:
$ PDO-> setAttribute(PDO :: MYSQL_ATTR_INIT_COMMAND =>“SET time_zone ='Europe / London'
是否有MSSQL的等价物?
由于
克里斯
答案 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对时区有很好的支持,所以你不需要在数据库中这样做。
如果你有一个特定的场景,那就问一个新的问题(在搜索之后是否已经被问过)。