2017-05-25 54 views
0

我期待在PDO-MSSQL連接上設置時區(每個會話),以便getdate()可用於存儲和返回用戶的本地時間(歐洲/倫敦)PDO&MSSQL - 如何更改每個連接的時區

Google爲MYSQL返回了數百個結果;但對MSSQL沒有任何幫助。所以,看起來這是MySQL的答案:

$ PDO->的setAttribute(PDO :: MYSQL_ATTR_INIT_COMMAND =>「SET TIME_ZONE ='歐洲/倫敦

是否有MSSQL等效

感謝

克里斯

回答

0

微軟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對時區有很好的支持,所以你不需要在數據庫中完成。

如果你有一個特定的情況,然後問一個新的問題(搜索後,看看它是否已被問)。

+0

謝謝 - 我有一種感覺,這是未來;就像你說的那樣,我可以在應用程序層處理它;只需在連接處添加一條線就簡單多了! –