我正在寻找一个高效的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. 将epoch/unix转换为日期时间
- 2. 将日期和时间转换为UNIX时代时间戳
- 3. 将SAS日期时间转换为SAS中的UNIX时间戳
- 4. 将XML日期时间转换为SQL日期时间
- 5. 将日期时间格式转换为Unix时间戳Pandas
- 6. 将日期时间转换为UNIX时间
- 7. PHP将MySQL日期时间转换为Unix时间戳
- 8. 将本地日期时间转换为UTC时间在php
- 9. Oracle SQL查询将Unix时间戳转换为Java的日期
- 10. MySQL:你如何将日期时间转换为unix时间?
- 11. 将熊猫日期时间索引转换为Unix时间?
- 12. 在Apex Salesforce中将Unix时间转换为日期时间
- 13. 转换Teradata的时间戳(6),以日期时间为SQL Server
- 14. 将日期时间转换为时间
- 15. PHP日期转换为unix时间戳
- 16. 将UTC日期时间转换为用户的本地日期和时间
- 17. 将文本转换为日期时间?
- 18. 转换日期时间在SQL Server
- 19. SQL Server日期时间转换
- 20. Sql Server日期时间转换
- 21. SQL Server日期时间转换失败
- 22. 如何将UTC日期时间转换为本地日期时间?
- 23. SQL Server将日期时间转换为n期前
- 24. Bash脚本将日期和时间列转换为.csv中的unix时间戳
- 25. 将文本日期转换为日期时间SQL服务器
- 26. 日期/时间转换为用户的本地时间 - 问题
- 27. 将小时转换为日期时间
- 28. 将时间和日期转换为mysql日期时间
- 29. 将当地时间转换为UNIX
- 30. SQL日期时间转换
请使用“SQL Server”来引用标记中的产品和sql-server。避免与“MySql”混淆,并且没有MSSQL这样的东西。 – 2009-07-24 12:15:27
在技术上可能没有这样的产品,但它是一种非常常用的折叠,而且你在那里游泳。在谷歌搜索返回九百五十万点击,其中第一个是微软SQL服务器主页 – Cruachan 2009-07-24 12:27:57