php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.12.2010, 08:11  
Erfahrener Benutzer
 
Registriert seit: 10.02.2009
Beiträge: 929
ragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Mensch
Standard Datumsabfrage

Hi, ich kämpfe gerade mit folgendem Problem:
DB Aufbau:
Code:
user_id        dob_day     dob_month     dob_year
1                  10                  12            1980
2                   15                 10            1985
Nun will ich die Geburtstage der nächsten 10 Tage auslesen.

Ich benutze folgenden Query, der aber nie etwas zurückliefert
PHP-Code:
 $sql =     "SELECT user_id FROM xf_user_profile "
        
"WHERE dob_day = DAY(DATE_ADD(CURDATE(),INTERVAL 10 DAY)) "
        
"AND dob_month = MONTH(DATE_ADD(CURDATE(),INTERVAL 0 MONTH))"
Jemand eine Ahnung was ich hier falsch mache?


Edit:
zB heutige geburtstage funktioniert, aber die kommenden nicht
PHP-Code:
 $sql =     "SELECT user_id FROM xf_user_profile "
        
"WHERE dob_day = DAY((CURDATE())) "
        
"AND dob_month = MONTH((CURDATE()))"

Geändert von ragtek (09.12.2010 um 08:19 Uhr).
ragtek ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.12.2010, 08:35  
erc
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 730
PHP-Kenntnisse:
Fortgeschritten
erc wird schon bald berühmt werden
Standard

Du weißt was ein = bei einem Vergleich bedeutet?
erc ist offline   Mit Zitat antworten
Alt 09.12.2010, 09:12  
Erfahrener Benutzer
 
Benutzerbild von Nullraff
 
Registriert seit: 27.10.2010
Beiträge: 183
PHP-Kenntnisse:
Fortgeschritten
Nullraff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von erc Beitrag anzeigen
Du weißt was ein = bei einem Vergleich bedeutet?
Was denn? In einer QUERY-Anweisung ist das einfache "=" ein Vergleich!
__________________
Kaum macht man's richtig, schon geht's
Nullraff ist offline   Mit Zitat antworten
Alt 09.12.2010, 09:16  
Erfahrener Benutzer
 
Benutzerbild von Nullraff
 
Registriert seit: 27.10.2010
Beiträge: 183
PHP-Kenntnisse:
Fortgeschritten
Nullraff befindet sich auf einem aufstrebenden Ast
Standard

Aus meinem Fundus:

PHP-Code:
$query "SELECT * FROM tabelle "
        
."WHERE (DATEDIFF(DATE_ADD(gebdat,INTERVAL YEAR(CURDATE())-YEAR(gebdat) YEAR),CURDATE()) BETWEEN 0 AND 30 "
        
."OR DATEDIFF(DATE_ADD(gebdat,INTERVAL (YEAR(CURDATE())-YEAR(gebdat))+1 YEAR), CURDATE()) BETWEEN 0 AND 30) "
        
."ORDER BY month(gebdat), day(gebdat)"
__________________
Kaum macht man's richtig, schon geht's
Nullraff ist offline   Mit Zitat antworten
Alt 09.12.2010, 13:06  
erc
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 730
PHP-Kenntnisse:
Fortgeschritten
erc wird schon bald berühmt werden
Standard

Zitat:
Zitat von Nullraff Beitrag anzeigen
Was denn?
Das die Werte gleich sein müssen. Wenn die Anforderung lautet such mir alle Geburtstage der nächsten 10 Tage, kann eine Bedinung die so ausschaut:

PHP-Code:
geburtstag tag+10 
wohl nicht stimmen.
erc ist offline   Mit Zitat antworten
Alt 09.12.2010, 13:34  
Erfahrener Benutzer
 
Benutzerbild von Nullraff
 
Registriert seit: 27.10.2010
Beiträge: 183
PHP-Kenntnisse:
Fortgeschritten
Nullraff befindet sich auf einem aufstrebenden Ast
Standard

@erc: Sorry, ich kann die von dir erwähnte Zeichenfolge in diesem Thread nicht entdecken...
__________________
Kaum macht man's richtig, schon geht's
Nullraff ist offline   Mit Zitat antworten
Alt 09.12.2010, 13:48  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Du möchtest einen Zeitraum erfassen, prüfst aber auf genau ein Datum, und das auch noch falsch. Das meint er.

Wenn du bei - in Pseudocode - heute + 10 Tage nur auf den Tag prüfst, kommst du beim 24.12. eben auf den 3. Januar. Davon der Tag ist 3, da du den Monat ja separat (+ 0 Monate) prüfst. Du prüfst also auf den 3. Dezember.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 09.12.2010, 16:36  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Würdest du es dir nicht bedeutend einfacher machen wenn du die Datumsangaben auch gleich in einem Mysql Datumsformat abspeicherst in einem Feld?

Also ein Feld vom Typ DATE wo das so gespeichert wird 1980-12-15, dann denke ich kannst du einfacher mit den Datumsfunktionen von Mysql arbeiten. Warum speicherst du denn Tag, Monat und Jahr in einzelnen Feldern, damit machst es dir ja selber unnötig kompliziert finde ich.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Alt 09.12.2010, 16:48  
Erfahrener Benutzer
 
Registriert seit: 10.02.2009
Beiträge: 929
ragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Mensch
Standard

Es ist leider nicht meine Applikation

Ich frage mich auch, wieso die das so gelöst haben...
Der Sinn davon ist, dass man den Geburtstag ohne Jahr setzen kann...
Wenn es ein Datumsfeld wäre, wäre ich schon fertig, da es dazu 100e Democodes im Netz gibt, aber zu dem Problem von mir konnte ich nichts finden.
ARGL
ragtek ist offline   Mit Zitat antworten
Alt 09.12.2010, 17:45  
Erfahrener Benutzer
 
Registriert seit: 04.08.2010
Beiträge: 287
PHP-Kenntnisse:
Fortgeschritten
zwutz wird schon bald berühmt werden
Standard

so in etwa... ohne gewähr

Code:
SELECT `user_id` from `xf_user_profile` 
  WHERE 
    STR_TO_DATE(CONCAT(`dob_day`, '.', `dob_month`, '.', YEAR(NOW())), '%d.%m.%Y') BETWEEN NOW() AND (NOW() + INTERVAL 10 DAY) 
    OR 
    STR_TO_DATE(CONCAT(`day`, '.', `month`, '.', YEAR(NOW() + INTERVAL 1 YEAR)), '%d.%m.%Y') BETWEEN NOW() AND (NOW() + INTERVAL 10 DAY);
ziemlicher hickhack, aber das prinzip sollte klar sein
zwutz ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datumsabfrage + Uhrzeit Datenbanken 12 06.12.2011 16:12
Datumsabfrage und Anzeige Apfelbaum PHP Tipps 2010 43 12.02.2010 01:23
[Erledigt] merkwürdiges BETWEEN datumsabfrage Problem litterauspirna Datenbanken 8 15.03.2009 17:08
Datumsabfrage... GELight PHP Tipps 2006 10 23.05.2006 20:46
datumsabfrage platzhalter Datenbanken 2 12.02.2006 10:43
spezielle Datumsabfrage! Boennchen Datenbanken 5 06.05.2005 13:10
[Erledigt] Datumsabfrage WHERE wie? Datenbanken 11 10.03.2005 14:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
curdate vergleichen, datumsabfrage, http://www.php.de/datenbanken/74876-datumsabfrage.html, html datumsabfrage, datumsabfrage bei vergleich, my sql concat date_add plus 1, html datumabfrage, mysql \where datediff\ php abfrage vergleichen, curdate(interval 1 year), jahr von datum abfrage

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:13 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum