![]() |
Datenbank: MySQL • Zugriff über: php
Monatsübergang Datumsabfrage
Hallo zusammen,
ich habe ein kleines Problem mit den Datumsfunktionen, die SQL bereitstellt. Und zwar habe ich eine Art Kalender in einer mySQL-Datenbank liegen. Mehrere Php-Skripts greifen darauf zu und sollen für verschiedene Tage: heute, morgen bzw. Rest der Woche die jeweiligen Einträge anzeigen. Dies funktioniert im Regelfall auch problemlos... Allerdings kommt es dann zu Problemen, wenn ein Monatsende überschritten wird. Also wenn heute der 31.01. ist zeigt er bei der Anzeige für morgen oder den Rest der Woche keine Einträge an, obwohl welche in der Datenbank stehen. Ich denke ich weiß auch, wo das Problem steckt:
SQL-Code:
Ich gehe davon aus, dass SQL bei Monatsübergängen nicht in der Lage ist aus 31.01. +2 ein 02.02. machen und stattdessen etwas à la 33.01. generiert.
SELECT ...
FROM kalender WHERE vonDatum>CURDATE() and vonDatum<(CURDATE()+2) ORDER BY vonDatum Eine Lösung, die ich mir überlegt hatte, war alles mit DAYOFYEAR() zu verrechnen. Nur gibt es dann halt das Problem, dass auch Einträge aus dem letzten Jahr mit angezeigt würden. Fällt euch da eine andere passende Funktion ein, die man benutzen könnte, oder wie würdet ihr die Abfrage gestalten? MfG Patrick |
Re: Monatsübergang Datumsabfrage
Welchen Typ hat vondatum?
Was passiert, wenn du curdate()+2 wieder explizit in einen Datumstyp umcastest? |
Re: Monatsübergang Datumsabfrage
vonDatum ist vom Typ date. also z.b. 2010-01-05
Das mit dem Casten habe ich in SQL noch nie gemacht. Wie funktioniert das hier? |
Re: Monatsübergang Datumsabfrage
mmh, weiß niemand eine Lösung?
Oder kennt jemand zumindest eine Seite, auf der ich mehr zu diesen SQL-Datumsfunktionen finde? |
Re: Monatsübergang Datumsabfrage
Kennt MySQL DateDiff()?
|
Re: Monatsübergang Datumsabfrage
SQL-Code:
SELECT *
FROM kalender WHERE vonDatum > CURDATE() AND vonDatum < DATE_ADD(CURDATE(), INTERVAL 2 DAY) ORDER BY vonDatum |
Re: Monatsübergang Datumsabfrage
Gibt es dieses DATE_ADD auch für die Vergangenheit? Also z.b. das Datum von vor 7 Tagen?
|
Re: Monatsübergang Datumsabfrage
Vielleicht so...
SQL-Code:
DATE_ADD(CURDATE(), INTERVAL -7 DAY)
|
Re: Monatsübergang Datumsabfrage
Beispiel:
wenn CURDATE() = 31.12.2010 dann ist + 2 = 02.02.2010 daraus ergibt sich für > 31.01.2010 = 01.02.2010 < 02.02.2010 = 01.12.2010 ergo werden nur Daten für den 01.02.2010 zurückgeliefert. Dein Statement sollte also simpel mit
SQL-Code:
funktionieren. Ansonsten schau dir mal das SQL-Schlüsselwort BETWEEN an.
SELECT ... FROM kalender WHERE vonDatum=CURDATE()+1;
CU, der Poelser |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz