2015-09-16 9 views
5

Mam ten czas trwania: 00:00:23.323 Chcę przekonwertować go w sql na milisekundy.Czas konwertowania SQL na milliseconds

EDIT: // próbowałem tego, ale to nie jest bardzo miły:

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') 

Jak to działa?

Dzięki za odpowiedzi.

+0

co dotychczas próbowałeś –

+1

Którą bazę danych polecasz? –

+0

Microsoft SQL Databse że próbuje to: 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) WYBIERZ DATEPART (ms, '12: 13: 14.123') – Lingo

Odpowiedz

14

Zastosowanie DATEDIFF:

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

Wynik:

23323 
+0

Dziękuję bardzo! – Lingo

1

Możesz użyć funkcji datepart. tak

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

I to jest dla którego produktu dbms? (Nikt nie kwestionował, a DATEPART jest specyficzny dla produktu ...) – jarlh

+0

tak to zdecydowanie jest :) – Lingo

2

mam to, że nie jest to dobry sposób, ale to działa:

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

[Odpowiedź] (http://stackoverflow.com/a/32602860/1175077) autorstwa t-clausen.dk jest znacznie lepsza ... – jpw

+1

Wiem, że PO tylko pyta o czasy "czasu", ale o to, ile jest warte , wzorzec w rozwiązaniu @ Lingo jest lepszy do duracji> = 1 dzień niż @ t-clausen.dk, ponieważ 'DateDiff' zwraca' Int', co oznacza, że ​​topi się na ~ 24 dniowej wartości milisekund i ~ 67 lat. sekund. 'DateDiff_Big' (który zwraca' BigInt') nie jest dostępny przed SQL Server 2016. – Tom