/ / Aktualisiere den Zeitteil nur einer Datums- / Uhrzeitspalte in SQL Server 2008 - SQL, SQL-Server, Datum / Uhrzeit

Aktualisierungszeit nur für eine Datetime-Spalte in SQL Server 2008 - SQL, SQL-Server, Datum und Uhrzeit

UPDATE tblAttendance2
SET
DateTimeIn = CONVERT(varchar(10), DateTimeIn, 120) + @TimeInChange,
DateTimeOut = CONVERT(varchar(10), DateTimeIn, 120) + @TimeOutChange
WHERE
AttendanceDeductionsID = @AttendanceDeductionsID

Ich bekomme diesen Fehler

Meldung 402, Ebene 16, Status 1, Prozedur SP_UpdateDTR_TimeChange, Zeile 8
Die Datentypen varchar und time sind im add-Operator nicht kompatibel.

Antworten:

0 für die Antwort № 1

Sie konvertieren DateTimeIn in ein varchar () und fügen dann @TimeInChange hinzu (wahrscheinlich ein Time-Typ). Das geht nicht.

Wenn DateTimeIn den Typ DateTime und @TimeInChange den Typ Time hat, funktioniert Folgendes:

UPDATE tblAttendance2
SET DateTimeIn = DateTimeIn + cast(@TimeInChange as DateTime),
DateTimeOut =DateTimeIn + cast(@TimeOutChange as DateTime)
WHERE AttendanceDeductionsID = @AttendanceDeductionsID

0 für die Antwort № 2

Angenommen @timeInChange ist vom Datentyp time Versuche dies

UPDATE tblAttendance2
SET
DateTimeIn  = cast(cast( DateTimeIn as date) as datetime) +  cast (@TimeInChange as datetime),
DateTimeOut = cast(cast( DateTimeIn as date) as datetime)  + cast (@TimeOutChange as datetime)
WHERE
AttendanceDeductionsID = @AttendanceDeductionsID

0 für die Antwort № 3

Bitte versuche :

Sql Server wenn du nur die hh + mm brauchst, dann kannst du

--DECLARE @datetimein datetime

--SELECT @datetime = GETDATE()



UPDATE tblAttendance2
SET DateTimeIn =
CAST(DATEPART(hour, @datetimein) as varchar(2)) +
":" +  CAST(DATEPART(minute, @datetimein)as varchar(2)) +@TimeInChange,

Date time out =use same procedure as above + @timeoutchange

where <some condition condition>