2016-07-20 15 views
0

enter image description hereFehler bei der Konvertierung während Datumzeit Umwandlung

Abfrage:

UPDATE dbo.FinalExtract 
SET WEWE = CASE 
       WHEN Wait_time <= '24' 
       THEN CONVERT(varchar, dateadd(hour, -24, Wait_time)) 
       ELSE CONVERT(varchar, dateadd(hour, +24, Wait_time)) 
      END 

Dies ist, was ich will, aber ich bin immer einen Konvertierungsfehler

Lassen Sie mich Ihnen sagen, wait_time ist

wait_time = CONVERT(VARCHAR, DATEDIFF(Hour, time_created, time_responded) % 24) + '.' 
     + CONVERT(VARCHAR, DATEDIFF(minute, time_created, time_responded) % 60) 

Ausgabe ist: 19.07

Ich möchte +24 Stunden hinzufügen, wenn der Ausgabewert weniger als 24 Stunden ist und wenn der Ausgabewert mehr als 24 Stunden ist, dann addieren Sie zusätzliche 24 Stunden.

ich versucht, dieses

UPDATE dbo.FinalExtract 
SET WEWE = CASE 
       WHEN Wait_time <= '24' 
       THEN CONVERT(varchar, dateadd(hour, -24, Wait_time)) 
       ELSE CONVERT(varchar, dateadd(hour, +24, Wait_time)) 
      END 

aber es funktioniert nicht, dass ich Konvertierungsfehler bin immer.

+0

bitte Ihre Tabellenschema erstellen, Beispieldaten und erwartete Ergebnis – Squirrel

+0

ja ich hochgeladen Screenshot ... wo ich will Spalte aktualisieren WEWE Werte –

+0

PLZ Freunde im Erhalten von Fehler, wenn ich diese Abfrage ausführen ..... Msg 241, Ebene 16, Status 1, Zeile 2 Konvertierung fehlgeschlagen, wenn Datum und/oder Uhrzeit aus Zeichenkette konvertiert. –

Antwort

0

Der Zeitteil sollte einen Doppelpunkt haben. Ihre wait_time sollte

sein
wait_time = CONVERT(VARCHAR, DATEDIFF(Hour, time_created, time_responded) % 24) + ':' 
     + CONVERT(VARCHAR, DATEDIFF(minute, time_created, time_responded) % 60) 
+0

ich habe das getan ... ich bekomme wait_time im varchar format, coz wovon ich diese Abfrage nicht ausführen kann ... UPDATE dbo.FinalExtract SET WEWE = case wenn Wait_time <= '24' dann convert (varchar, dateadd (hour, -24, Wait_time)) else convert (varchar, dateadd (hour, +24, Wait_time)) ende ...... da hier Konvertierungsfehler angezeigt wird –

+0

ich habe das versucht .......... ........ UPDATE dbo.FinalExtract SET WEWE = IIF ( wait_time <= 24, datumadd (stunde, -24, wait_time), datumadd (stunde, +24, wait_time)) aber wieder ein fehler bekommen Die Konvertierung ist fehlgeschlagen, wenn der varchar-Wert '0.2' in den Datentyp int konvertiert wurde. –

0

Ich denke, das wird Ihnen helfen:

Declare @timeCreated datetime='2016-06-09 12:26:12.000' 
Declare @timeresponded datetime='2016-06-09 14:28:12.000' 
declare @waittime datetime; 
set @waittime=(select case when DateDiff(hh,@timeCreated,@timeresponded) < 24 then DateDiff(hh,@timeCreated,@timeresponded) + 24else DateDiff(hh,@timeCreated,@timeresponded) end) 
update dbo.finalextract set [email protected] 
Verwandte Themen