我有一個數據庫,其中包含當前存儲在本地時間的日期時間字段。即將到來的項目將要求將所有這些日期轉換爲世界時。我寧願使用可用的sqlserver/sql功能將這些日期準確地轉換爲通用時間,而不是編寫一個c#應用程序來將這些時間轉換爲世界時,所以我只需要更新腳本。爲了準確,轉換需要考慮夏令時波動等。如何使用SQL將SqlServer日期時間轉換爲通用時間
2
A
回答
0
一個用戶定義函數會允許你寫一個SQL查詢,看起來像這樣:
SELECT toUTC([MyDateColumn], [MyTimeZoneColumn]) FROM [MyTable]
然後你得到普遍次從服務器返回的查詢中不包含本身有很多醜陋的語法。現在,您可以使用類似於Chris發佈的常規SQL來構建UDF,但SQL Server 2005和更高版本將允許您使用CLR(.Net:C#可選)構建UDF。它具有更好的日期支持,並可以在考慮時區和夏時制方面做得更好。
0
SQL沒有爲此內置任何內容。
兩種方式將是C# application
(你提到你不想)或類似的東西寫一個非常複雜的更新語句:
UtcDate = DATEADD(hour, CASE WHEN OriginalDate BETWEEN x AND y THEN 4
WHEN OriginalDate BETWEEN x2 AND y2 THEN 5 ... END, OriginalDate)
注 - 我建議C# app
加上像TZ4Net東西處理轉換。
0
查看轉換函數和getutcdate函數?
0
退房this link from CodeProject.com - 它正是你想要的:取日期和時區,將它們傳遞到一個UDF,並獲得UTC日期或任何其它時區。
重要提示:請檢查該文章的評論 - 作者在某個時間點之後不允許修改文章,並且在解決某些未找到問題的評論中有用於UDF的代碼的更新版本在原來的文章代碼中。
同樣重要的:不要用它來查詢大型數據集。對於一次性加載到數據庫或者爲單行返回UTC日期(如用戶登錄表或您擁有的東西),這是完全正確的。
如果您想要性能,唯一真正可以接受的方法是時區轉換應該有一個查找表,它可以處理每年每個小時的每個可能的時區轉換,並使用一個case語句來處理年份之間的轉換(即12月31日 - 1月1日,反之亦然)。是的,表是巨大,但查詢性能爲零。
相關問題
- 1. 將XML日期時間轉換爲SQL日期時間
- 2. 如何將IronPython日期時間轉換爲.NET日期時間?
- 3. 如何將UTC日期/時間轉換爲EST日期/時間
- 4. 將日期時間轉換爲時間
- 5. 將字符串轉換爲SqlServer的日期時間用C#
- 6. 如何使用Netezza將日期時間轉換爲日期
- 7. 將日期時間轉換爲SQL UTC
- 8. 如何將.Net日期時間轉換爲T-SQL日期時間
- 9. 使用php將Unix時間轉換爲GMT日期時間
- 10. 轉換日期時間用毫秒到SQL日期時間
- 11. 使用SQL Server將24小時時間字符串轉換爲日期時間
- 12. javascript日期/時間字符串轉換爲SQL日期時間
- 13. SQL轉換日期時間
- 14. SQL日期時間轉換
- 15. 轉換日期時間SQL
- 16. SQL日期時間轉換
- 17. 使用as.POSixct轉換爲日期時間
- 18. 將時間戳轉換爲日期和時間Sql
- 19. 調整時區 - 將XML日期時間轉換爲SQL日期時間
- 20. 將小時轉換爲日期時間
- 21. SharePoint列表日期/時間字段轉換爲通用時間
- 22. 使用逗號將日期時間DateTime轉換爲日期時間#
- 23. 使用SQL將UTC時間戳轉換爲EST日期和時間
- 24. 將C#日期時間轉換爲XML日期時間類型
- 25. 將日期和時間轉換爲日期+時間戳
- 26. 將時間和日期轉換爲mysql日期時間
- 27. 將日期時間轉換爲另一日期時間
- 28. 將日期,日期時間轉換爲時間戳
- 29. 將日期時間int轉換爲日期時間
- 30. 將當地日期時間轉換爲UTC日期時間