我想用SQL Server中的函數GETUTCDATE()添加我的時區。我搜索了幾次,但沒有找到任何相關的解決方案。提前致謝。GETUTCDATE()和時區(SQL Server)
回答
你可以嘗試使用switchoffset
這樣的:
select switchoffset(CAST(myDate as datetimeoffset),'+05:30') from someTable
而不是'+05:30'
可以指定你的時區值。
如果你想使用GETUTCDATE()的時區,然後簡單地添加像這樣
select cast(GETUTCDATE() as varchar(20)) + '+5:30'
,如果你想保持其作爲日才
select switchoffset(CAST(GETUTCDATE() as datetimeoffset),'+05:30')
這不是夏時制時間。失敗 – Aflred
只爲sql 2016,它考慮到夏令時。
CREATE FUNCTION GetBelgiumTime
(
)
RETURNS datetime2
AS BEGIN
declare @dateoffset datetimeoffset
SET @dateoffset = convert(VARCHAR(2000),(SELECT GETUTCDATE() AT TIME ZONE 'Central European Standard Time'),126)
declare @date datetime2
set @date = convert(datetime2, LEFT(@dateoffset,28),126)
set @date = DATEADD(HOUR, convert(int,LEFT(RIGHT(@dateoffset,5), 2)), @date)
RETURN @date
END
select dbo.GetBelgiumTime() as BelgiumDateAndTime
所有轉換爲並從varchars和dateadd,是不必要的。只需使用'SYSDATETIMEOFFSET'而不是'GETUTCDATE'並且'AT TIME ZONE'將正確轉換。 –
從SQL Server 2016向前(和SQL Azure的DB),你可以這樣做:
SELECT SYSDATETIMEOFFSET() AT TIME ZONE @tz
其中@tz是一個有效的Windows時區標識符,如'Pacific Standard Time'
,'Central European Standard Time'
等。
但是,如果你是在一箇舊版本的SQL Server,或喜歡使用IANA時區標識符,你可以用我的SQL Server Time Zone Support項目做到以下幾點:
SELECT Tzdb.UtcToLocal(GETUTCDATE(), @tz)
其中@tz
是IANA標準時區名稱,例如'America/Los_Angeles'
或'Europe/Budapest'
。
- 1. SQL Server爲函數返回錯誤的UTC時間GETUTCDATE
- 2. DateTime.UtcNow和GETUTCDATE()差異
- 3. SQL將GETUTCDATE轉換爲像'東部標準時間'那樣的nvarchar時區
- 4. ASP.NET/SQL Server - 設置時區
- 5. SQL Server時區更改
- 6. currenttimestamp與時區在sql server
- 7. SQL Server Compact與SQL Server和SQL Server Standard有什麼區別?
- 8. 什麼是postgresql中MS SQL Server的getutcdate()的等價性?
- 9. 使用DATEDIFF(MINUTE,GETUTCDATE(),GETDATE())獲取本地SQL Server時區偏移量是否安全?
- 10. GetUTCDate with Entity Framework
- 11. SQL Server:分區
- 12. getUTCDate()函數問題在不同的時區
- 13. SQL server 2012 - 時間點和完成時間的區別?
- 14. SQL Server如何在不同時區保留和使用時間
- 15. Sql Server 2005和Sql Server 2008的主要區別是什麼?
- 16. sql server 2008 64位和sql server 2008有什麼區別?
- 17. 在sql server 2005和sql server 2008中,SCHEMA有什麼區別?
- 18. SQL Server Compact Edition和SQL Server Express Edition有什麼區別?
- 19. sql server分區表
- 20. SQL Server表分區
- 21. sql server 2008分區
- 22. 轉換/搜索GETUTCDATE()
- 23. SQL Server中的時區考慮事項
- 24. 在SQL Server上存儲時區
- 25. 在SQL Server 2008 R2中獲取時區
- 26. SQL Server 2008中的時區名稱
- 27. 處理時區C#Asp.Net MVC SQL Server
- 28. 將SQL Server DateTimeOffset轉換爲時區
- 29. SQL Server:通過超時分區的row_number
- 30. SQL Server 2005,在時區之間複製
而不是'GETUTCDATE'使用[SYSDATETIMEOFFSET()](https://msdn.microsoft.com/en-us/library/bb677334.aspx)。它將返回一個包含機器時區偏移量的「datetimeoffset」值。如果要將其切換爲另一個偏移量,請使用[SWITCHOFFSET](https://msdn.microsoft.com/en-us/library/bb677244.aspx) –