請幫我這個, 我想將一個值從Bigint轉換爲datetime。 例如即時閱讀歷史的TeamCity服務器的桌子上,現場build_start_time_server我有一個記錄該值1283174502729.從Bigint轉換爲datetime值
我怎麼能轉換爲datetime值???
謝謝
請幫我這個, 我想將一個值從Bigint轉換爲datetime。 例如即時閱讀歷史的TeamCity服務器的桌子上,現場build_start_time_server我有一個記錄該值1283174502729.從Bigint轉換爲datetime值
我怎麼能轉換爲datetime值???
謝謝
這是否適合您?它返回30-8-2010 13點21分42秒在SQL Server 2005上的那一刻:
select dateadd(s, convert(bigint, 1283174502729)/1000, convert(datetime, '1-1-1970 00:00:00'))
我除以1000,因爲大DATEADD函數不會與一些工作。所以你確實會失去一點精確度,但使用起來要簡單得多。
克洛克,多數民衆贊成是完美的。感謝您的幫助。 – Chris 2010-09-06 09:51:29
@Chris如果這是正確的,你應該接受答案。 – 2010-09-06 10:23:12
略有不同的方法:
您的方案:
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
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)
DATEADD(第二,YourValue,CAST( '1970-01-01 00:00:00' AS DATETIME))
Downvoted。 「將表達式轉換爲數據類型int的算術溢出錯誤」。與問題中提供的數據。 – UnhandledExcepSean 2016-08-12 17:02:31
然而,通過一些調整它可以工作,也許海報可以解決一些問題?(upvoted鼓勵他一下:)) – Gar 2016-08-12 17:08:36
下面以新的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));
你嘗試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
爲我工作。
我改變了標籤,希望讓它們更具體。請注意,如果您在標記字段中使用「sql server」,則該標記將置於* sql *標記以及* server *標記之下,但不在* sql-server *標記之下,這可能是您想要的。 – krock 2010-09-06 09:31:07
你想要什麼日期時間值爲1283174502729? – gbn 2010-09-06 09:42:54