Dynamische Zeitabfrage

Adriano10

Benutzer
Beiträge
19
Moin zusammen,

wie kann ich eine SQL-Code schreibe, so dass dynamisch abgefragt wird. Also wird die Daten zwischen heute und einem Jahr früh geliefert. z.B 28.04.2022 und 28.04.2021

Vielen Dank im Voraus
 
Werbung:
Um Daten von Heute mit Daten von vor einem Jahr vergleichen zu können müssen beide Informationen auch in der Datenbank vorhanden sein, das ist nicht grundsätzlich der Fall. Wie genau historische Informationen in einer Datenbank abgebildet werden ist absolut individuell, das kann man pauschal nicht sagen. Du wirst uns also verraten müssen wie deine Tabellen aufgebaut sind.
 
folgendes ist PostgreSQL, aber analoge Funktionen sollte es auch in M$SQL geben:

Code:
postgres=# create table adriano10(id int generated always as identity primary key, datum date);
CREATE TABLE
postgres=# insert into adriano10 (datum) select '2019-01-01'::date + s * '1month'::interval from generate_series(0,48) s;
INSERT 0 49
postgres=# select * from adriano10 where datum between current_date - '1year'::interval and current_date;
 id |   datum    
----+------------
 29 | 2021-05-01
 30 | 2021-06-01
 31 | 2021-07-01
 32 | 2021-08-01
 33 | 2021-09-01
 34 | 2021-10-01
 35 | 2021-11-01
 36 | 2021-12-01
 37 | 2022-01-01
 38 | 2022-02-01
 39 | 2022-03-01
 40 | 2022-04-01
(12 rows)

postgres=#
 
Das Vorgehen ist so:
Du selektierst mit einer passenden Funktion das Tagesdatum, wenn benötigt inkl. Uhrzeit. Als zweites selektierst Du abhängig vom aktuellen Datum das Interval -1 Jahr. Damit hast Du zwei Werte zum Vergleich auf Deine eigenen Daten in den Tabellen.

Hier ist ein Link, der auch beschreibt, wann man welche Funktion einsetzen kann und welchen Unterschied es macht.

Probiers aus:
Code:
select GETDATE();
select CURRENT_TIMESTAMP;
select SYSDATETIME();
select GETUTCDATE();
select SYSUTCDATETIME();
select SYSDATETIMEOFFSET();
Das mit dem Intervall bekommst Du bestimmt auch hin.
 
Werbung:
Zurück
Oben