我正在尋找一個高效的SQL Server函數(在我的情況下爲2005),用於將使用本地時間的unix時間值轉換爲SQL Server日期時間(特別考慮到夏令時調整 - 即不只是在幾秒鐘內將01/01/1970)將Unix時間轉換爲本地日期時間的SQL Server函數
3
A
回答
2
SELECT DATEADD(second, @ts, {d '1970-01-01'}) as MSSQLdatetime
後你有約會,你現在可以做DATEADD上取決於DST狀態返回的日期。要檢查DST你需要某種形式的功能,樣品:
CREATE function [dbo].[fn_GetDaylightSavingsTimeStart]
(@Year varchar(4))
RETURNS smalldatetime
as
begin
declare @DTSStartWeek smalldatetime, @DTSEndWeek smalldatetime
set @DTSStartWeek = '03/01/' + convert(varchar,@Year)
return case datepart(dw,@DTSStartWeek)
when 1 then
dateadd(hour,170,@DTSStartWeek)
when 2 then
dateadd(hour,314,@DTSStartWeek)
when 3 then
dateadd(hour,290,@DTSStartWeek)
when 4 then
dateadd(hour,266,@DTSStartWeek)
when 5 then
dateadd(hour,242,@DTSStartWeek)
when 6 then
dateadd(hour,218,@DTSStartWeek)
when 7 then
dateadd(hour,194,@DTSStartWeek)
end
end
你需要一個simular功能找到DST結束時,看看這個網站獲取更多信息: http://www.mssqltips.com/tip.asp?tip=1372
1
更好?
CREATE FUNCTION [dbo].[UnixTimestampToGMTDatetime]
(@UnixTimestamp bigint)
RETURNS datetime
AS
BEGIN
DECLARE @GMTDatetime datetime
select @GMTDatetime =
CASE
WHEN dateadd(ss, @UnixTimestamp/1000, '1970-01-01')
BETWEEN
Convert(DATETIME, Convert(VARCHAR(4), Year(dateadd(ss, @UnixTimestamp/1000, '1970-01-01'))) + '-03-' + Convert(VARCHAR(2), (31 - (5 * Year(dateadd(ss, @UnixTimestamp/1000, '1970-01-01'))/4 + 4) % 7)) + ' 01:00:00', 20)
AND
Convert(DATETIME, Convert(VARCHAR(4), Year(dateadd(ss, @UnixTimestamp/1000, '1970-01-01'))) + '-10-' + Convert(VARCHAR(2), (31 - (5 * Year(dateadd(ss, @UnixTimestamp/1000, '1970-01-01'))/4 + 1) % 7)) + ' 02:00:00', 20)
THEN Dateadd(hh, 1, dateadd(ss, @UnixTimestamp/1000, '1970-01-01'))
ELSE Dateadd(hh, 0, dateadd(ss, @UnixTimestamp/1000, '1970-01-01'))
END
RETURN @GMTDatetime
END
相關問題
- 1. 將unix時期時間戳轉換爲TSQL日期時間
- 2. 將日期轉換爲UNIX時間戳
- 3. 將epoch/unix轉換爲日期時間
- 4. 在sql中將本地日期時間從xml轉換爲日期時間
- 5. SQL Server時間戳轉換爲日期
- 6. 將日期和時間轉換爲UNIX時代時間戳
- 7. 將日期時間轉換爲Unix時間戳
- 8. 將SAS日期時間轉換爲SAS中的UNIX時間戳
- 9. 如何將UTC日期時間轉換爲本地時間Jquery
- 10. 將XML日期時間轉換爲SQL日期時間
- 11. 將日期時間轉換爲python中的unix時間戳
- 12. 將當地日期時間轉換爲UTC日期時間
- 13. 將日期和時間轉換爲UNIX時間
- 14. JQ:將UNIX時間戳轉換爲日期時間
- 15. 將日期時間格式轉換爲Unix時間戳Pandas
- 16. 將日期時間轉換爲UNIX時間
- 17. 將UTC日期時間轉換爲當地日期時間
- 18. PHP將MySQL日期時間轉換爲Unix時間戳
- 19. SQL Server(T-SQL)日期時間轉換
- 20. 將日期時間對象轉換爲用戶本地時間
- 21. 將本地日期時間轉換爲UTC時間在php
- 22. Oracle SQL查詢將Unix時間戳轉換爲Java的日期
- 23. 轉換Teradata的時間戳(6),以日期時間爲SQL Server
- 24. 使用php將Unix時間轉換爲GMT日期時間
- 25. 將熊貓日期時間索引轉換爲Unix時間?
- 26. 在Apex Salesforce中將Unix時間轉換爲日期時間
- 27. MySQL:你如何將日期時間轉換爲unix時間?
- 28. 字符串轉換爲函數SQL Server日期時間
- 29. 將日期時間轉換爲時間
- 30. 將日期時間轉換爲SQL UTC
請使用「SQL Server」來引用標記中的產品和sql-server。避免與「MySql」混淆,並且沒有MSSQL這樣的東西。 – 2009-07-24 12:15:27
在技術上可能沒有這樣的產品,但它是一種非常常用的摺疊,而且你在那裏游泳。在谷歌搜索返回九百五十萬點擊,其中第一個是微軟SQL服務器主頁 – Cruachan 2009-07-24 12:27:57