请帮我这个, 我想将Bigint中的值转换为datetime。 例如,我在 build_start_time_server build_start_time_server em> 我在一条记录1283174502729上有这个值。
如何转换为datetime值???
由于
答案 0 :(得分:26)
这对你有用吗?它在SQL Server 2005上返回30-8-2010 13:21:42:
select dateadd(s, convert(bigint, 1283174502729) / 1000, convert(datetime, '1-1-1970 00:00:00'))
我已经除以1000,因为dateadd函数不适用于那么大的数字。所以你确实失去了一点精度,但使用起来要简单得多。
答案 1 :(得分:3)
略有不同的方法:
你的情景:
SELECT dateadd(ms, 1283174502729 / 86400000, (1283174502729 / 86400000) + 25567)
FROM yourtable
通用代码:
SELECT dateadd(ms, yourfield / 86400000, (yourfield / 86400000) + 25567)
FROM yourtable
输出:
August, 30 2010 00:00:14
答案 2 :(得分:3)
CAST(SWITCHOFFSET(CAST(dateadd(s, convert(bigint, [t_stamp]) / 1000, convert(datetime, '1-1-1970 00:00:00')) AS DATETIMEOFFSET), DATENAME (TZoffset, SYSDATETIMEOFFSET())) AS DATETIME)
答案 3 :(得分:0)
DATEADD(second,YourValue, CAST('1970-01-01 00:00:00' AS datetime))
答案 4 :(得分:0)
以下内容考虑了新的SQL术语,并将返回毫秒数(也可以修改以在计算字段中使用。)[SQL Server 2012或更高版本]
declare @StartDate datetime2(3) = '1970-01-01 00:00:00.000'
, @milliseconds bigint = 1283174502729
, @MillisecondsPerDay int = 60 * 60 * 24 * 1000 -- = 86400000
SELECT DATEADD(MILLISECOND, TRY_CAST(@milliseconds % @millisecondsPerDay AS
INT), DATEADD(DAY, TRY_CAST(@milliseconds / @millisecondsPerDay AS INT),
@StartDate));
答案 5 :(得分:-1)
你试过FROM_UNIXTIME
吗?
select from_unixtime('your_field') from 'your_table'
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_from-unixtime
适合我。