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



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

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

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

MSSQL 有等效项吗?

谢谢

克里斯

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

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

仅当您确实需要在数据库层进行时区转换时,才需要这两种方法中的任何一种。 在绝大多数情况下,您实际上并不需要这样做。 相反,请在应用程序层处理时区转换。 PHP 对时区有非常好的支持,所以你不需要在数据库中这样做。

如果您有一个特定的场景,那么问一个新问题(在搜索以查看它是否已经被问过之后)。

相关内容

  • 没有找到相关文章

最新更新