wake-up-neo.com

Wie konvertiere ich eine Ganzzahl (Zeit) in HH: MM: SS :: 00 in SQL Server 2008?

Hier habe ich eine Tabelle mit einer time-Spalte (Datentyp ist integer), jetzt muss ich den Ganzzahlwert in das Zeitformat HH:MM:SS:00 in SQL Server 2008 konvertieren.

Benötigen Sie auch eine Klarstellung im obigen time-Format, ob 00 Millisekunden darstellt? 

Bitte helfen Sie dabei.

beispiel: 23421155 steht für 23: 42: 11: 55; 421151 steht für 00: 42: 11: 51

Hoffe, dass es jetzt klar ist.

12
Praveen
declare @T int

set @T = 10455836
--set @T = 421151

select (@T / 1000000) % 100 as hour,
       (@T / 10000) % 100 as minute,
       (@T / 100) % 100 as second,
       (@T % 100) * 10 as millisecond

select dateadd(hour, (@T / 1000000) % 100,
       dateadd(minute, (@T / 10000) % 100,
       dateadd(second, (@T / 100) % 100,
       dateadd(millisecond, (@T % 100) * 10, cast('00:00:00' as time(2))))))  

Ergebnis:

hour        minute      second      millisecond
----------- ----------- ----------- -----------
10          45          58          360

(1 row(s) affected)


----------------
10:45:58.36

(1 row(s) affected)
16
Mikael Eriksson

Konvertieren Sie die Ganzzahl in eine Zeichenfolge. Anschließend können Sie die STUFF-Funktion verwenden, um Ihre Doppelpunkte in die Zeitzeichenfolge einzufügen. Danach können Sie die Zeichenfolge in einen Zeitdatentyp konvertieren.

SELECT CAST(STUFF(STUFF(STUFF(cast(23421155 as varchar),3,0,':'),6,0,':'),9,0,'.') AS TIME)

Das sollte der einfachste Weg sein, um es in eine Zeit umzuwandeln, ohne verrückt zu werden.

In Ihrem Beispiel hatten Sie auch ein int, wo die führenden Nullen nicht vorhanden sind. In diesem Fall können Sie einfach so etwas tun:

SELECT CAST(STUFF(STUFF(STUFF(RIGHT('00000000' + CAST(421151 AS VARCHAR),8),3,0,':'),6,0,':'),9,0,'.') AS TIME)
8
all about data

Sie können die folgende Zeitkonvertierung in SQL folgendermaßen verwenden:

--Convert Time to Integer (Minutes)
DECLARE @timeNow datetime = '14:47'
SELECT DATEDIFF(mi,CONVERT(datetime,'00:00',108), CONVERT(datetime, RIGHT(CONVERT(varchar, @timeNow, 100),7),108))

--Convert Minutes to Time
DECLARE @intTime int = (SELECT DATEDIFF(mi,CONVERT(datetime,'00:00',108), CONVERT(datetime, RIGHT(CONVERT(varchar, @timeNow, 100),7),108)))
SELECT DATEADD(minute, @intTime, '')

Ergebnis: 887 <- Zeit in Minuten und 1900-01-01 14: 47: 00.000 <- Minuten bis Zeit

1
A Ghazal

Verwenden Sie die integrierte MSDB.DBO.AGENT_DATETIME (20150119,0).

https://blog.sqlauthority.com/2015/03/13/sql-server-interesting-function-agent_datetime/

0
Bruce Morris II