Polyeder
Benutzer
- Beiträge
- 10
Hallo liebe Leute,
ich habe eine Liste mit datetime-Werten und will daraus die Uhrzeit so auslesen, dass ich die Minuten in Viertel unterteile um sie dann mit der Group-Funktion zu aggregieren.
Zuerst die Tabelle
Das sollte dann das hier ergeben:
nrstart
1 2020-03-31 12:10:10.000
2 2020-03-31 12:11:11.000
3 2020-03-31 12:13:13.000
4 2020-03-31 12:16:10.000
5 2020-03-31 12:17:11.000
6 2020-03-31 12:19:13.000
7 2020-03-31 13:11:10.000
8 2020-03-31 13:11:11.000
9 2020-03-31 13:13:13.000
10 2020-03-31 13:16:10.000
11 2020-03-31 13:17:11.000
12 2020-03-31 13:19:13.000
Nun mein Problem:
Nach der Format-Funktion werden bis 12:59 alles Werte richtig aggregiert, aber ab 13:00 aggregiert die Funktion im sog. 12-Std.-Modus, heißt also: 13:00 Uhr ist 01:00 Uhr.

Wie kann ich der Formatfunktion beibringen, dass die Werte im 24-Std.-Modus erstellt werden sollen?
ich habe eine Liste mit datetime-Werten und will daraus die Uhrzeit so auslesen, dass ich die Minuten in Viertel unterteile um sie dann mit der Group-Funktion zu aggregieren.
Zuerst die Tabelle
Code:
CREATE TABLE [dbo].[tab_zeit](
[nr] [int],
[start] [datetime] NOT NULL)
insert into [dbo].[tab_zeit] ([nr], [start]) values ('1', '2020-03-31T12:10:10.000');
insert into [dbo].[tab_zeit] ([nr], [start]) values ('2', '2020-03-31T12:11:11.000');
insert into [dbo].[tab_zeit] ([nr], [start]) values ('3', '2020-03-31T12:13:13.000');
insert into [dbo].[tab_zeit] ([nr], [start]) values ('4', '2020-03-31T12:16:10.000');
insert into [dbo].[tab_zeit] ([nr], [start]) values ('5', '2020-03-31T12:17:11.000');
insert into [dbo].[tab_zeit] ([nr], [start]) values ('6', '2020-03-31T12:19:13.000');
insert into [dbo].[tab_zeit] ([nr], [start]) values ('7', '2020-03-31T13:11:10.000');
insert into [dbo].[tab_zeit] ([nr], [start]) values ('8', '2020-03-31T13:11:11.000');
insert into [dbo].[tab_zeit] ([nr], [start]) values ('9', '2020-03-31T13:13:13.000');
insert into [dbo].[tab_zeit] ([nr], [start]) values ('10', '2020-03-31T13:16:10.000');
insert into [dbo].[tab_zeit] ([nr], [start]) values ('11', '2020-03-31T13:17:11.000');
insert into [dbo].[tab_zeit] ([nr], [start]) values ('12', '2020-03-31T13:19:13.000');
--drop table [dbo].[tab_zeit]
select * from [dbo].[tab_zeit]
Das sollte dann das hier ergeben:
nrstart
1 2020-03-31 12:10:10.000
2 2020-03-31 12:11:11.000
3 2020-03-31 12:13:13.000
4 2020-03-31 12:16:10.000
5 2020-03-31 12:17:11.000
6 2020-03-31 12:19:13.000
7 2020-03-31 13:11:10.000
8 2020-03-31 13:11:11.000
9 2020-03-31 13:13:13.000
10 2020-03-31 13:16:10.000
11 2020-03-31 13:17:11.000
12 2020-03-31 13:19:13.000
Nun mein Problem:
Code:
select
[start], datepart(hour, [start]) as stunde, datepart(minute, [start]) as minuten,
Format([start],'hh') + (
case when(Format([start],'mm')<15) then ':00'
when(Format([start],'mm')<30) then ':15'
when(Format([start],'mm')<45) then ':30'
else ':45' end) as Zeit_von
FROM [dbo].[tab_zeit]
group by Format([start],'hh') + (case when (Format([start],'mm')<15) then ':00' when(Format([start],'mm')<30) then ':15' when (Format([start],'mm')<45) then ':30' else ':45' end), [start]
order by [start]
Nach der Format-Funktion werden bis 12:59 alles Werte richtig aggregiert, aber ab 13:00 aggregiert die Funktion im sog. 12-Std.-Modus, heißt also: 13:00 Uhr ist 01:00 Uhr.

Wie kann ich der Formatfunktion beibringen, dass die Werte im 24-Std.-Modus erstellt werden sollen?
Anhänge
Zuletzt bearbeitet: