2015-09-16 252 views
5

我有這段時間:00:00:23.323 我想將它轉換爲SQL爲毫秒。SQL將時間轉換爲毫秒

編輯:// 我試過,但它是不是很漂亮:

SELECT (DATEPART(hh,'12:13:14.123') * 60 * 60 * 1000) 
SELECT (DATEPART(n,'12:13:14.123') * 60 * 1000) 
SELECT (DATEPART(s,'12:13:14.123') * 1000) 
SELECT DATEPART(ms,'12:13:14.123') 

它是如何工作的?

感謝您的回答。

+0

你到目前爲止嘗試過什麼 –

+1

你在引用哪個數據庫? –

+0

微軟SQL DATABSE 我嘗試這樣做: SELECT(DATEPART(HH,'12:13:14.123 ')* 60 * 60 * 1000) SELECT(DATEPART(N,'12:13:14.123')* 60 * 1000) SELECT DATEPART(ms,'12:13:14.123') – Lingo

回答

14

使用DATEDIFF

SELECT DATEDIFF(MILLISECOND, 0, '00:00:23.323') 

結果:

23323 
+0

非常感謝! – Lingo

1

您可以使用datepart函數。 這樣

select DATEPART(MILLISECOND,GETDATE())+DATEPART(second,getdate())*1000 
+0

這是哪個dbms產品? (沒有人指定的問題,DATEPART是產品特定的...) – jarlh

+0

是的,它絕對是:) – Lingo

2

我得到了它,這不是很好的方式,但它的工作原理:

SELECT (DATEPART(hh,'00:00:23.323') * 60 * 60 * 1000) + (DATEPART(n,'00:00:23.323') * 60 * 1000) + (DATEPART(s,'00:00:23.323') * 1000) + DATEPART(ms,'00:00:23.323') AS 'DurationInMillis' 
+0

t-clausen.dk的[答案](http://stackoverflow.com/a/32602860/1175077)好得多... – jpw

+1

我知道OP只詢問「時間」的持續時間,但對於它的價值,@ Lingo解決方案中的模式比@ t-clausen.dk更好地延長到大於1天的時間,因爲DateDiff返回一個Int,這意味着它在約24天的時間和約67年的時間內達到頂峯。秒。 DateDiff_Big(它返回一個BigInt)在SQL Server 2016之前不可用。 – Tom