CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
05.01.2011, 12:36:13
|
Anfänger
|
|
Registriert seit: Jan 2011
Alter: 43
Beiträge: 16
|
|
Tage seit letztem Geburtstag ermitteln
Wie der Titel schon sagt, will ich wausfinden, wie lange (in Tagen) der Geburtstag eines Users zurückliegt.
Mein query sieht so aus, funktioniert leider nicht mehr durch das neue Jahr
Code:
SELECT customers_dob, DAYOFYEAR(customers_dob)-DAYOFYEAR(NOW()) as diff FROM customers
|
05.01.2011, 12:53:39
|
Junior Member
|
|
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
|
|
AW: Tage seit letztem Geburtstag ermitteln
Probiert mal...
Code:
SELECT TIMESTAMPDIFF(DAY, '2010-12-31',CURRENT_DATE) AS diff_days, current_date ;
+-----------+--------------+
| diff_days | current_date |
+-----------+--------------+
| 5 | 2011-01-05 |
+-----------+--------------+
1 row in set (0.00 sec)
mysql>
Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
|
05.01.2011, 12:58:43
|
Anfänger
|
|
Registriert seit: Jan 2011
Alter: 43
Beiträge: 16
|
|
AW: Tage seit letztem Geburtstag ermitteln
Wir haben noch mysql 4
|
05.01.2011, 14:40:37
|
Junior Member
|
|
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
|
|
AW: Tage seit letztem Geburtstag ermitteln
Na dann vielleicht so...
ca. Berechnung der Differenz (geht nur zwischen 01.01.1970 und 2037(?))
Code:
SELECT (unix_timestamp(CURRENT_DATE) - unix_timestamp('2010-12-31')) / (24*60*60) AS ca_diff_days;
+--------------+
| ca_diff_days |
+--------------+
| 5.0000 |
+--------------+
1 row in set (0.00 sec)
Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
|
05.01.2011, 14:44:53
|
Anfänger
|
|
Registriert seit: Jan 2011
Alter: 43
Beiträge: 16
|
|
AW: Tage seit letztem Geburtstag ermitteln
Danke für den Tipp, allerdings sind manche User vor 1970 gebohren. Das ist ziemlich kniffelig, da durch den Jahreswechsel nicht mit dem letzten Jahr sondern mit dem jetzigen Jahr gerechnet wird.
Was ich wissen muss ist, ob der User in den letzten 60 Tagen Geburtstag hatte. Ich bieg mir bald ein Knoten ins Hirn.
|
05.01.2011, 15:10:30
|
Junior Member
|
|
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
|
|
AW: Tage seit letztem Geburtstag ermitteln
oder so...
a) Die Berechnung in PHP machen..
b) Notlösung: Bei denen die vor 1970 geboren sind, einfach für die Berechnung das Jahr 1970 einsetzen.
z.B. Fritz 11.11.1940 => 11.11.1970
Code:
SELECT (unix_timestamp(CURRENT_DATE) - unix_timestamp('1970-11-11')) / (24*60*60) AS ca_diff
Dies ergibt einen Fehler bei denen, die am Schalttag 29.02.xxxx Geburtstag haben. Sonst sollte es stimmen meine ich. Einfach mal testen.
Vielleicht reicht das aus für Deinen Zweck.
c) Update auf MySQL 5.x , wäre sowieso sinnvoll..
Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
|
05.01.2011, 15:23:52
|
Anfänger
|
|
Registriert seit: Jan 2011
Alter: 43
Beiträge: 16
|
|
AW: Tage seit letztem Geburtstag ermitteln
Danke, aber damit bekomme ich die Zeitspanne zwischen den 2 Datumswerten, die brauch ich nicht, ich muss wissen ob er in den letzten 60 Tagen Geburtstag hatte.
Im Prinzip müsste ich den Monat und den Tag aus seinem Geburtstag nehmen und prüfen ob dieses Datum (ohne Jahr) innerhalb von heute und heute-60 liegt. Keine Ahnung wie ich das in ner SQL formulieren soll.
Mit PHP wäre auch o.k.
Ich denke aber nicht, dass es geht, da ich ohne Jahr arbeite und es somit mind. 2 Möglichkeiten gibt (dieses Jahr und letztes Jahr)
|
05.01.2011, 16:26:38
|
Junior Member
|
|
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
|
|
AW: Tage seit letztem Geburtstag ermitteln
Zitat:
Zitat von bonanza10
Im Prinzip müsste ich den Monat und den Tag aus seinem Geburtstag nehmen und prüfen ob dieses Datum (ohne Jahr) innerhalb von heute und heute-60 liegt. Keine Ahnung wie ich das in ner SQL formulieren soll.
|
Das ist leider nur die "halbe Miete". Das Problem ist das Schaltjahr. Ich überlege schon seit einer Weile, komme aber auf keine schnelle Lösung. Die meisten Beispiele die ich finde, berücksichtigen das Schaltjahr nicht richtig.
Das Problem nehme ich mal als Hausaufgabe mit... (die "SQL-Lösung" kann aber etwas dauern).
Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
|
05.01.2011, 16:35:25
|
Anfänger
|
|
Registriert seit: Jan 2011
Alter: 43
Beiträge: 16
|
|
AW: Tage seit letztem Geburtstag ermitteln
Ja das mit dem Schaltjahr hab ich auch noch im Kopf, was ich bis jetzt habe ist das:
Code:
SELECT customers_dob FROM customers WHERE ( DAYOFYEAR('1980-1-1 00:00:00') BETWEEN DAYOFYEAR(CURDATE()) AND DAYOFYEAR(CURDATE())-60) AND
bringt mir leider keine Ausgabe
|
05.01.2011, 17:50:36
|
Junior Member
|
|
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
|
|
AW: Tage seit letztem Geburtstag ermitteln
Hi,
wie wäre es mit dieser Idee
Code:
SELECT DATEDIFF(DATUM1,DATUM2) AS `differenz`
MySQL rechnet DATUM1 - DATUM2 mit der Anzahl Tage als Differenz-Wert im Ergebnis.
Und dann in PHP
PHP-Code:
if ($result['differenz'] <= 59)
{
irgendwelcher PHP-Code
}
elseif ($result['differenz'] == 60)
{
anderer PHP-Code
}
elseif ($result['differenz'] >= 61)
{
noch anderer PHP-Code
}
Hier die Dokumentation:
http://dev.mysql.com/doc/refman/4.1/...ction_datediff (MySQL 4.1; Englisch)
http://dev.mysql.com/doc/refman/5.1/...functions.html (MySQL 5.1; Deutsch; Muss etwas scrollen)
Kai aka Knight1
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 10:01:11 Uhr.
|