mist10
Goto Top

Access Datumsabfrage

Guten Morgen an alle Access-Profis,

aktuell versuche ich mich mit dem Thema Access auseinanderzusetzen und stolpere gerade über folgendes Thema.

Ich habe eine Tabelle [tbl_Übersicht] u.a. mit einer Spalte [Frist], die als Datum deklariert ist.

Über eine Abfrage versuche ich mit alle Zeilen dieser Tabelle anzeigen zu lassen, die in [Frist] ein Datum stehen haben, welches in 2 Monaten abläuft. Also aktueller Monat Februar bis einschließlich April.

Leider finde ich im WWW nichts passendes bzw. hab´s bis jetzt nicht finden können.

Hätte einer einen Vorschlag?


Wäre für jede Hilfe dankbar.

Gruß
M

Content-ID: 6068274912

Url: https://administrator.de/contentid/6068274912

Ausgedruckt am: 22.11.2024 um 00:11 Uhr

em-pie
em-pie 21.02.2023 aktualisiert um 07:34:25 Uhr
Goto Top
Moin,

Versuch mal ein
Where Frist <= 
  Dateadd(Day, -1, Dateadd(Month, 3, Convert(Date, Concat('1', GetMonth(Current_Timestamp), GetYear(Current_Timestamp)))))  

Damit wird aus dem heutigen Tag der Monat und das Jahr extrahiert und auf den 1. gesetzt. Anschließend 3 Monate addiert und zu guter letzt 1Tag subtrahiert.

Also:
21.02.2023 -> 01.02.2023 -> 01.05.2023 -> 30.04.2023


Bin mir aber nicht ganz sicher, ob MS Access auch die MS SQL-Syntax komplett kann
MIST10
MIST10 21.02.2023 um 09:05:44 Uhr
Goto Top
Hi,
vielen Dank. Scheint an der Syntax zu scheitern. DateAdd kennt er zwar, aber Convert nicht (lt. meinen Versuchen).

Echt nicht einfach.... ;/
em-pie
em-pie 21.02.2023 um 09:21:19 Uhr
Goto Top
Bin kein ACCESS-Pro (hab das letzte mal vor > 8 Jahren an ACCESS gesessen), aber versuch mal

Evtl. lag es an einem Fehler bei mir oben: hier die Korrektur (es fehlte der . nach der 1)
Convert(Date, Concat('1.', GetMonth(Current_Timestamp), GetYear(Current_Timestamp)))  

Falls das auch nicht klappen sollte:
CDATE(Concat(GetMonth(Current_Timestamp), '/1/', GetYear(Current_Timestamp)))  
Hinweis: es kann Sein, dass ACCESS die Schreibweise MM/DD/YYYY erwartet, daher mal umgestellt.
Nebellicht
Nebellicht 21.02.2023 um 11:01:35 Uhr
Goto Top
Hallo hab' mal gegoogelt: DatDiff ("jjjj"; [Geburtsdatum]; Datum()) > 30*2
could be the soulution.

support.microsoft.com/de-de/office/beispiele-f%C3%BCr-abfragekriterien-3197228c-8684-4552-ac03-aba746fb29d8
colinardo
Lösung colinardo 21.02.2023 aktualisiert um 12:26:35 Uhr
Goto Top
Servus.
Grafisch über Abfrage-Ausdruck

screenshot

oder als Access SQL
SELECT *
FROM tbl_Übersicht
WHERE (((tbl_Übersicht.Frist)<DateAdd("m",3,DateSerial(Year(Date()),Month(Date()),1))));  
Beides jeweils bis zum Ende des 2 Monats, so habe ich das zumindest aus der Frage interpretiert.

screenshot

screenshot


Wenn Daten aus der Vergangenheit auch noch ausgefiltert werden sollen ergänzt man halt noch ein >=Datum() mit "und" bzw. "and" mit der obigen Bedingungen verknüpft.
Als Abfrageausdruck (Deutsch)
>=Datum() Und < DatAdd("m";3;DatSeriell(Jahr(Datum());Monat(Datum());1))  
bzw. SQL
SELECT *
FROM tbl_Übersicht
WHERE (((tbl_Übersicht.Frist)>=Date() And (tbl_Übersicht.Frist)<DateAdd("m",3,DateSerial(Year(Date()),Month(Date()),1))));  

Grüße Uwe
MIST10
MIST10 21.02.2023 um 13:49:40 Uhr
Goto Top
WOW, vielen Dank für die vielen Hinweise bzw. Lösungen. Ihr habt mir den (Arbeits-)Tag etwas verkürzt.

Danke