Datumsproblematik

Hallo Newsgroup,

folgendes WHERE-Statement verwende ich in meiner Abfrage

....SELECT * FROM $sql_tabelle WHERE
((date_format(datumsspalte_in_mysql_db,'%j-%Y') <=
date_format(now(),'%j-%Y')

ich möchte dabei einen besimmten Zeitraum vom in der MySQL-DB
gespeicherten Datum bis heute eingrenzen. Die Abfrage funktioniert
nicht. Beispiel: am heutigen Datum zählt der 01.01.2007 bereits als
Vergangenheit, dh. das Jahr wird bei meiner Abfrage ignoriert. Kann mir
jemand helfen?


Grüße Daniel
Daniel Schmidt [ Sa, 09 Dezember 2006 01:28 ] [ ID #1561670 ]

Re: Datumsproblematik

HI Daniel

Daniel Schmidt wrote:
> folgendes WHERE-Statement verwende ich in meiner Abfrage
> ...SELECT * FROM $sql_tabelle WHERE
> ((date_format(datumsspalte_in_mysql_db,'%j-%Y') <=
> date_format(now(),'%j-%Y')
> ich möchte dabei einen besimmten Zeitraum vom in der MySQL-DB
> gespeicherten Datum bis heute eingrenzen. Die Abfrage funktioniert
> nicht. Beispiel: am heutigen Datum zählt der 01.01.2007 bereits als
> Vergangenheit, dh. das Jahr wird bei meiner Abfrage ignoriert. Kann mir
> jemand helfen?

"001-2007" <= "343-2006" ist wahr, weil 3 grösser als 0 (erstes
Zeichen). Wieso nicht einfach folgendes?
select ... from ... where datum <= now()

Oder falls du ein datetime-Attribut vergleichst:
select ... from ...
where date_format(date,'%Y-%m-%d') <= date_format(now(),'%Y-%m-%d')

Oder was ich wegen der kürzeren Schreibweise auch noch gerne mache:
select ... from ...
where left(date,10) <= left(now(),10)

HTH, Johannes
Johannes Vogel [ Sa, 09 Dezember 2006 02:09 ] [ ID #1562548 ]

Re: Datumsproblematik

Hallo Johannes,

ich hatte vergessen das ich zur

(date_format(datumsspalte_in_mysql_db,'%j-%Y') +$frist_in_tagen

noch eine Frist in Tagen dazuzähle. Kann ich deine Lösungen trotzdem
verwenden?


Grüße Daniel

Johannes Vogel schrieb:

> HI Daniel
>
> Daniel Schmidt wrote:
>
>>folgendes WHERE-Statement verwende ich in meiner Abfrage
>>...SELECT * FROM $sql_tabelle WHERE
>>((date_format(datumsspalte_in_mysql_db,'%j-%Y') <=
>>date_format(now(),'%j-%Y')
>>ich möchte dabei einen besimmten Zeitraum vom in der MySQL-DB
>>gespeicherten Datum bis heute eingrenzen. Die Abfrage funktioniert
>>nicht. Beispiel: am heutigen Datum zählt der 01.01.2007 bereits als
>>Vergangenheit, dh. das Jahr wird bei meiner Abfrage ignoriert. Kann mir
>>jemand helfen?
>
>
> "001-2007" <= "343-2006" ist wahr, weil 3 grösser als 0 (erstes
> Zeichen). Wieso nicht einfach folgendes?
> select ... from ... where datum <= now()
>
> Oder falls du ein datetime-Attribut vergleichst:
> select ... from ...
> where date_format(date,'%Y-%m-%d') <= date_format(now(),'%Y-%m-%d')
>
> Oder was ich wegen der kürzeren Schreibweise auch noch gerne mache:
> select ... from ...
> where left(date,10) <= left(now(),10)
>
> HTH, Johannes

--
Hallo Newsgroup,



Grüße Daniel
Daniel Schmidt [ Sa, 09 Dezember 2006 14:59 ] [ ID #1562550 ]

Re: Datumsproblematik

Hi Daniel

Informiere dich, was TOFU ist.

Daniel Schmidt wrote:
> ich hatte vergessen das ich zur
> (date_format(datumsspalte_in_mysql_db,'%j-%Y') +$frist_in_tagen
> noch eine Frist in Tagen dazuzähle. Kann ich deine Lösungen trotzdem
> verwenden?

date_add ist dein Freund:
select ... where date_add(datum, interval $frist_in_tagen day) > now()

oder so...
Johannes
Johannes Vogel [ Sa, 09 Dezember 2006 15:33 ] [ ID #1562551 ]
PHP » de.comp.lang.php.datenbanken » Datumsproblematik

Vorheriges Thema: von DB einer Tabelle zwei Felder abfragen
Nächstes Thema: php-query | gruppierte datenausgabe