können Sie DATEPART verwenden:
Gibt eine Ganzzahl, die den angegebenen Datumsteil des angegebenen Datums darstellt.
Kombination mit DATEADD:
Gibt ein angegebenes Datum mit der angegebenen Nummer Intervall (Ganzzahl mit Vorzeichen) zu einem festgelegten Datumsteil von diesem Datum.
Beispiel:
DECLARE @val AS DATETIME = '1899-12-30 01:30:00.000';
SELECT @val; -- 1899-12-30 01:30:00.000
SET @val = DATEADD(SECOND, DATEPART(MINUTE, @val),
DATEADD(MINUTE, (DATEPART(HOUR, @val)),
CAST(CAST(@val AS DATE) AS DATETIME)));
SELECT @val; -- 1899-12-30 00:01:30.000
dies der Wert an einen date
wirft, den Zeitabschnitt abzustreifen und zurück zu einem datetime
die Zeit zu 00:00:00
einzustellen. Fügt dann Minuten basierend auf dem Stundenwert und Sekunden basierend auf dem Minutenwert hinzu.
Sie können dies mit einer UPDATE
Anweisung verwenden, aber stellen Sie sicher, dass Sie eine WHERE
Klausel verwenden, um zu vermeiden, alles zu aktualisieren, es sei denn, das ist, was Sie beabsichtigen. Aktualisierungsabfrage
Beispiel:
CREATE TABLE #temp
(
AvgTimeToAnswer DATETIME
);
INSERT INTO #temp
(AvgTimeToAnswer)
VALUES ('1899-12-30 01:30:00.000');
SELECT *
FROM #temp; -- 1899-12-30 01:30:00.000
UPDATE #temp
SET AvgTimeToAnswer = DATEADD(SECOND, DATEPART(MINUTE, AvgTimeToAnswer),
DATEADD(MINUTE,
(DATEPART(HOUR, AvgTimeToAnswer)),
CAST(CAST(AvgTimeToAnswer AS DATE) AS DATETIME)));
-- WHERE some condition
SELECT *
FROM #temp; -- 1899-12-30 00:01:30.000
DROP TABLE #temp;
Es ist, aber wie werden Sie diese * * bestimmte Datensätze identifizieren? – GurV
Sie möchten die Werte von Minuten in Sekunden und Stunde in Minuten verschieben? –
Korrigieren Ich möchte die Uhrzeit als 00:01:30 anzeigen, die momentan als 01:30:00 angezeigt wird, und die Minuten als Sekunden anzeigen. Ich bin mir nicht sicher, wie man bestimmte Datensätze identifiziert, aber das ist etwas, das herausgefunden werden kann. – Tom