per DB-Abfrage runden

23/02/2009 - 11:14 von Sabine Nachbauer | Report spam
Hallo,

ich suche eine Möglichkeit um bei einer Abfrage einen Datetime-Wert zu
runden und das auf eine Viertel-Stunde.

Also, 10:02Uhr und 10:14Uhr wàre 10:00Uhr - hier Abrunden. Auch muss unter
anderen Umstànden aufgerundet werden

16:01Uhr und 16:14 = 16:15Uhr

Jemand eine Idee, wie man das machen kann unter Firebird aber auch unterm
SQL-Server?
 

Lesen sie die antworten

#1 Elmar Boye
23/02/2009 - 11:39 | Warnen spam
Hallo Sabine,

Sabine Nachbauer schrieb:
ich suche eine Möglichkeit um bei einer Abfrage einen Datetime-Wert zu
runden und das auf eine Viertel-Stunde.

Also, 10:02Uhr und 10:14Uhr wàre 10:00Uhr - hier Abrunden. Auch muss unter
anderen Umstànden aufgerundet werden

16:01Uhr und 16:14 = 16:15Uhr

Jemand eine Idee, wie man das machen kann unter Firebird aber auch unterm
SQL-Server?



Mit Modulo und DATEADD geht es beim SQL Server,
Firebird sollte vergleichbares haben.

Jeweils einmal auf- und einmal abgerundet,
da Du Dich oben nicht entscheiden kannst:

CREATE TABLE dbo.Zeiten (Zeit Datetime )

INSERT INTO dbo.Zeiten VALUES('10:00')
INSERT INTO dbo.Zeiten VALUES('10:05')
INSERT INTO dbo.Zeiten VALUES('10:15')
INSERT INTO dbo.Zeiten VALUES('10:20')
INSERT INTO dbo.Zeiten VALUES('10:31')
INSERT INTO dbo.Zeiten VALUES('10:45')
INSERT INTO dbo.Zeiten VALUES('10:59')
GO
SELECT
Zeit,
DATEPART(mi, Zeit) % 15 AS Modulo15,

DATEADD(mi,
CASE WHEN (DATEPART(mi, Zeit) % 15) <> 0
THEN 15 - (DATEPART(mi, Zeit) % 15)
ELSE 0 END,
Zeit) AS ZeitAufgerundet,

DATEADD(mi,
- (DATEPART(mi, Zeit) % 15),
Zeit) AS ZeitAbgerundet
FROM dbo.Zeiten

Gruß Elmar

Ähnliche fragen