divinefaith
Goto Top

SQL Select nach aktuellem Monat filtern

Moin, ich möchte in Microsoft Access eine Abfrage erstellen, welche aus einer Tabelle einen Select machen soll und diese Abfrage aber nur die Inhalte ausgibt, welche in der Spalte "Month" den Aktuellen Monat drin stehen haben.
Leider weiß ich aber keine Variable die den aktuellen Monat drin stehen hat.

SELECT tblHotline.[Month], tblHotline.[Operations]
FROM tblHotline
where ([Month]) = "aktueller Monat";  

Content-ID: 42215254024

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

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

CiscoStattDisco
CiscoStattDisco 15.11.2023 um 11:36:56 Uhr
Goto Top
Servus,

eventuell so?:

SELECT tblHotline.[Month], tblHotline.[Operations]
FROM tblHotline
where ([Month]) = "November";

oder

SELECT tblHotline.[Month], tblHotline.[Operations]
FROM tblHotline
where ([Month]) = "xx.11.2023";

Gruß
erikro
erikro 15.11.2023 aktualisiert um 11:42:14 Uhr
Goto Top
8585324113
8585324113 15.11.2023 um 12:05:01 Uhr
Goto Top
Und nun sollen alle raten?
em-pie
em-pie 15.11.2023 aktualisiert um 12:13:03 Uhr
Goto Top
Moin,

SELECT tblHotline.[Month], tblHotline.[Operations]
FROM tblHotline
WHERE tblHotline.[Month] = DATEPART(month, CURRENT_TIMESTAMP);  

wobei du hier dann natürlich den November aus den Jahren 1900, 1901, ... 2020, 2021, 2022, 2023 erhalten wirst, daher wäre die Einschränkung auf das Jahr ggf. noch sinnvoll
ukulele-7
ukulele-7 15.11.2023 um 12:48:02 Uhr
Goto Top
datepart() ist dein Freund, siehe @em-pie. Außerdem wäre wichtig welches Format deine Spalte "Month" hat. Wenn es eine Zeichenkette mit führender 0 ist, wird es vermutlich impliziet konvetiert von Access, ganz sicher bin ich aber nicht. Jedenfalls wäre dann eine explizite Konvertierung die etwas sauberere Lösung. Überhaupt komisch das du eine Spalte Month hast, wieso kein DATE oder DATETIME?
DivineFaith
DivineFaith 15.11.2023 um 13:04:00 Uhr
Goto Top
Zitat von @CiscoStattDisco:

Servus,

eventuell so?:

SELECT tblHotline.[Month], tblHotline.[Operations]
FROM tblHotline
where ([Month]) = "November";

oder

SELECT tblHotline.[Month], tblHotline.[Operations]
FROM tblHotline
where ([Month]) = "xx.11.2023";

Gruß

Danke erstmal, nur dann ist ja der Monat hart kodiert und das würd ich ganz gern vermeiden, wenn es geht
DivineFaith
DivineFaith 15.11.2023 um 13:11:10 Uhr
Goto Top
Zitat von @em-pie:

Moin,

SELECT tblHotline.[Month], tblHotline.[Operations]
FROM tblHotline
WHERE tblHotline.[Month] = DATEPART(month, CURRENT_TIMESTAMP);  

wobei du hier dann natürlich den November aus den Jahren 1900, 1901, ... 2020, 2021, 2022, 2023 erhalten wirst, daher wäre die Einschränkung auf das Jahr ggf. noch sinnvoll

Access kennt leider keinen Current_Timestamp
DivineFaith
DivineFaith 15.11.2023 um 13:16:20 Uhr
Goto Top
Zitat von @ukulele-7:

datepart() ist dein Freund, siehe @em-pie. Außerdem wäre wichtig welches Format deine Spalte "Month" hat. Wenn es eine Zeichenkette mit führender 0 ist, wird es vermutlich impliziet konvetiert von Access, ganz sicher bin ich aber nicht. Jedenfalls wäre dann eine explizite Konvertierung die etwas sauberere Lösung. Überhaupt komisch das du eine Spalte Month hast, wieso kein DATE oder DATETIME?

in der spalte month stehen ausgeschriebene Monate drin, wie february oder march.
erikro
erikro 15.11.2023 um 13:16:44 Uhr
Goto Top
Moin,

Zitat von @DivineFaith:
Access kennt leider keinen Current_Timestamp

Doch. Heißt da getdate(). Einfach mal auf die von mir geposteten Links klicken. face-wink

Liebe Grüße

Erik
8030021182
8030021182 15.11.2023 aktualisiert um 14:27:28 Uhr
Goto Top
Zitat von @DivineFaith:
in der spalte month stehen ausgeschriebene Monate drin, wie february oder march.

SELECT tblHotline.[Month], tblHotline.Operations
FROM tblHotline
WHERE (tblHotline.[Month] = MonthName(Month(Date())));
ukulele-7
ukulele-7 16.11.2023 um 09:12:58 Uhr
Goto Top
Zitat von @erikro:

Moin,

Zitat von @DivineFaith:
Access kennt leider keinen Current_Timestamp

Doch. Heißt da getdate(). Einfach mal auf die von mir geposteten Links klicken. face-wink
Deine Links beziehen sich auf Microsoft SQL, Access unterstützt nur einen Bruchteil davon.


Zitat von @8030021182:

Zitat von @DivineFaith:
in der spalte month stehen ausgeschriebene Monate drin, wie february oder march.

SELECT tblHotline.[Month], tblHotline.Operations
FROM tblHotline
WHERE (tblHotline.[Month] = MonthName(Month(Date())));

Ansich richtig. Bei Monatsnamen würde ich aber auf die Funktion verzichten, wegen möglichen Unterschieden in der Sprache. Dabei wäre auch zu prüfen, wie die Monatsnamen überhaupt erst in die Tabelle kommen, möglicherweise auch da irgendwann inkonsistent. Es ist Access, mach's am besten zu Fuss:
WHERE month(date()) = 1 AND spalte = 'Januar'  
OR month(date()) = 2 AND spalte = 'Februar'  
OR ...
8030021182
8030021182 16.11.2023 aktualisiert um 09:50:21 Uhr
Goto Top
Das man da lokalisierte Monatsnamen statt DateTime in ne Spalte schreibt ist ja schon gelinde gesagt krank 😀. Das würde ich als erstes mit einem Update der Tabelle beheben statt mit solchen krummen Workarounds zu hantieren. Just m2cent
8585324113
8585324113 16.11.2023 um 09:49:58 Uhr
Goto Top
Zitat von @8030021182:

Das man da lokalisierte Monatsnamen statt DateTime in ne Spalte schreibt ist ja schon gelinde gesagt krank 😀.

Ach warum? Schön als String in ein X-Byte varchar.
Geht alles.
ukulele-7
ukulele-7 16.11.2023 um 09:53:55 Uhr
Goto Top
Jeder hat eine Lernkurve, auch in Datenbanken. Je mehr man mit Datumsbestandteilen arbeitet desto schneller erkennt man den Nutzen von Datumsformaten und -funktionen. Und mit länderspezifischen Formaten sollte man immer rechnen und sich gleich überlegen wie man das zuverlässig baut.
8585324113
8585324113 16.11.2023 um 09:55:02 Uhr
Goto Top
Datetime2