从Bigint转换为datetime值

Chr*_*ris 15 sql t-sql sql-server teamcity

请帮我这个,我想将Bigint的值转换为datetime.例如,我正在阅读teamcity服务器的HISTORY表,在字段build_start_time_server上,我在一条记录上有这个值1283174502729.

我怎样才能转换为datetime值???

谢谢

Rob*_*Rob 29

这对你有用吗?它在SQL Server 2005上返回30-8-2010 13:21:42:

select dateadd(s, convert(bigint, 1283174502729) / 1000, convert(datetime, '1-1-1970 00:00:00'))
Run Code Online (Sandbox Code Playgroud)

我除以1000因为dateadd函数不适用于那么大的数字.所以你确实失去了一点精度,但使用起来要简单得多.


Mat*_*att 6

略有不同的方法:

你的场景:

SELECT dateadd(ms, 1283174502729 / 86400000, (1283174502729 / 86400000) + 25567)
FROM yourtable
Run Code Online (Sandbox Code Playgroud)

通用代码:

SELECT dateadd(ms, yourfield / 86400000, (yourfield / 86400000) + 25567)
FROM yourtable
Run Code Online (Sandbox Code Playgroud)

输出:

August, 30 2010 00:00:14
Run Code Online (Sandbox Code Playgroud)

SQL小提琴:http ://sqlfiddle.com/#!3/c9eb5a/2/0