2015-09-16 231 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