2016-09-18 1 views
0

ich weiß Stab, Sekunden zwischen bisher ZeitErhalten Sekunde zwischen Zeitstempelfeld und CURRENT_TIMESTAMP

Einer meiner Feld ist CreateDate(it's Timestamp) und andere CURRENT_TIMESTAMP(current date)

Also, was ich tue, ist:

((CreateDate)- CURRENT_TIMESTAMP) AS Result_Seconds 

Aber ich habe diesen Fehler:

Arithmetic overflow error converting expression to data type datetime.

+0

Eine Spalte vom Typ 'TIMESTAMP' in SQL Server hat ** absolut NICHTS ** mit einem Datum und einer Uhrzeit zu tun - es ist nur ein Binärzähler –

+0

@marc_s so was schlagen Sie vor – Mohi

+0

Ich bin Dies legt nahe, dass Sie einfach keine Sekunden zwischen einem "TIMESTAMP" und einem aktuellen Datum bestimmen können, da 'TIMESTAMP' *** *** NO *** Datum/Zeit-Wert ist. –

Antwort

0

Sie könnengegossenals datetime und verwenden Sie dann DATEDIFF:

SELECT DATEDIFF(
       SECOND, 
       CAST(Column1 as datetime), 
       CAST(CURRENT_TIMESTAMP as datetime) 
       ) Result_Seconds 
FROM yourtable 

Oder wie MSDN sagt über CURRENT_TIMESTAMP:

This function is the ANSI SQL equivalent to GETDATE.

So können Sie verwenden:

SELECT DATEDIFF(
       SECOND, 
       CAST(Column1 as datetime), 
       GETDATE() 
       ) Result_Seconds 
FROM yourtable 
+0

Haben DATEDIFF ist so ein Fehler auf SQL-Projekt, weil für große Daten es nicht funktioniert – Mohi

+0

Ist '2,147,483,647' Sekunden zu klein? Dann benutze Unix Timestamp in Sekunden (bigint) und arbeite damit. AFAIK in SQL Server 2016 fügen sie datediff Analog hinzu, das Bigint-Wert zurückgibt. – gofr1

Verwandte Themen