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 |
24.12.2009, 10:41:38
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 66
|
|
Datumsvergleich innerhalb 7 Tagen
Hallo SQL-Master.
Ich bin mir einigermaßen sicher, dass ihr Profis eine schöne, saubere Lösung für mein kleines SQL-Problem habt, sonst würde ich mir da sicher was zusammen murksen:
In meiner Tabelle gibt es ein
Feld 'vondatum',
Typ Variant,
Daten = Datums im UNIX-Zeitstempel.
Meine Abfrage soll mir auf alle Fälle den nach aktuellem Tagesdatum nächsten Datensatz liefern
oder
die nächsten BEIDEN Datensätze falls das Datum von Satz1 zu Satz2 nicht mehr als 7 Tg auseinanderliegt.
Ich hoffe, ich habe mich klar genug ausgedrückt.
Klar geht das einfach mit '...order by vondatum limit 2', aber dann weiß ich noch nicht, ob beide Sätze nur maximal 7 Tage auseinanderliegen.
Vielleicht habt ihr ja was Schönes für mich.
Ansonsten wünsche ich Euch auf jeden Fall schon
Frohe Weihnachten
und einen Guten Rutsch.
Bernhard aus Schwerte
|
29.12.2009, 08:24:02
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Hi
was ist Variant?
Zitat:
In meiner Tabelle gibt es ein
Feld 'vondatum',
Typ Variant,
|
naja gehe davon aus das die Spalte zu
Zitat:
Daten = Datums im UNIX-Zeitstempel.
|
richtig formatiert ist.
Code:
select * from tabelle where daten>=UNIX_TIMESTAMP(CURDATE()) and daten<=UNIX_TIMESTAMP(date_add(CURDATE(),INTERVAL 7 DAY)) limit 2
MfG
Ckaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
30.12.2009, 08:20:41
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 66
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Danke für die Antwort. Ich hau da manchmal Visual Basic, SQL und php durcheinander.
Ich speichere den UNIX-Timestamp bisher in ein varchar-Feld der SQL-Datenbank.
Ist das gut so oder gibt es da sinnvollere Datentypen für die Spalte, die dann bessere Auswertungen des Datums ermöglichen ??
|
02.01.2010, 03:10:20
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Zitat:
Zitat von bernhard3105
Ich speichere den UNIX-Timestamp bisher in ein varchar-Feld der SQL-Datenbank.
Ist das gut so oder gibt es da sinnvollere Datentypen für die Spalte, die dann bessere Auswertungen des Datums ermöglichen ??
|
Ja. Datums- und Zeittypen
|
02.01.2010, 09:53:19
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Zitat:
Zitat von bernhard3105
Ich speichere den UNIX-Timestamp bisher in ein varchar-Feld der SQL-Datenbank.
Ist das gut so oder gibt es da sinnvollere Datentypen
|
abgesehen von urvaters hinweis wäre INT (integer) zu nennen, wenn man nicht zuviel logik auf das dbms auslagern möchte. der speicherbedarf dieses datentyps ist darüber hinaus sehr klein.
cx
|
02.01.2010, 11:34:21
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 66
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Ich danke euch für eure Hilfe.
Bisher hatte ich mein Datum in einem DATE-Feld gespeichert. Der Einfachheit halber bin ich jetzt im Zuge einer Neuprogrammierung vom DATE-Feld zum VARCHAR-Feld und Datumswerte im UNIX-Zeitstempelformat gewechselt. Mußte aber nun feststellen, dass mir da eine ganze Menge SQL-Datumsauswertungen schlecht oder garnicht möglich waren und bin jetzt wieder beim Date-Feld gelandet. Na ja, so ist das halt, wenn man als Halbwissender an solche Sachen rangeht. Aber dafür gibts ja auch dieses wirklich tolle Forum mit vielen erstklassigen und hilfsbereiten Experten. Vielen Dank nochmal und einen Guten Start ins neue Jahr.
Bernhard aus Schwerte
|
02.01.2010, 11:38:49
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Zitat:
Zitat von bernhard3105
[...]
Mußte aber nun feststellen, dass mir da eine ganze Menge SQL-Datumsauswertungen schlecht oder garnicht möglich waren
|
Welche waren Dir denn da nicht möglich?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
03.01.2010, 11:34:40
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 66
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Na ja, da ist immer noch das Problem, welches ich im Eingang geschildert habe. Der Vorschlag von Ckaos funktioniert so nicht oder ich kriegs nicht hin. Und dann wäre ja noch die Sache mit Datums vor 1970. Die gehen ja sowieso nicht im Unix-Timestamp. Also ist auf jeden Fall das Date-Format sinnvoll.
Zu meinem oben geschilderten Problem:
Benötige also eine Abfrage die mir den vom aktuellen Datum den nächsten Datensatz liefert.
PHP-Code:
$sql = "SELECT * FROM msc_infos WHERE vdatum >= CURDATE() ORDER BY vdatum LIMIT 1;"
Kein Problem also (vdatum ist ein Datum einer zukünftigen Sportveranstaltung im Date-Format).
Falls von diesem gelieferten vdatum aus gesehen in den weiteren 7 Tagen noch weitere Veranstaltungen anstehen (max 2) möchte ich diese noch dazu geliefert bekommen.
Im mysql_fetch_object sollten sich also zwischen 0 und 3 Datensätze befinden.
Zur Zeit lese ich die nächsten drei Datensätze in ein array und vergleiche diese dann über php-code. Vielleicht gibt es ja eine feine sql-Lösung. Wäre schön und ich hab wieder was gelernt.
Bis dann
Bernhard
|
03.01.2010, 15:28:03
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Datumsvergleich innerhalb 7 Tagen
HI
Zitat:
Zitat von bernhard3105
Na ja, da ist immer noch das Problem, welches ich im Eingang geschildert habe. Der Vorschlag von Ckaos funktioniert so nicht oder ich kriegs nicht hin.
|
Dann schreib ich ihn das du nur noch Copy & Paste machen musst und erkläre dir dazu den gedankengang.
Code:
$sql = "SELECT * FROM msc_infos WHERE vdatum >= CURDATE() and vdatum <= date_add(CURDATE(),INTERVAL 7 DAY) ORDER BY vdatum LIMIT 3;"
>= CURDATE() -> is ja klar alles was jetzt oder gößer jetzt ist.
<= date_add(CURDATE(),INTERVAL 7 DAY) -> alles was kleiner oder gleich jetzt plus 7 tagen ist
date_add = etwas zu einem Datum addieren
interval x = Intervallwert
DAY = Tage
siehe MYSQL
mfg
Ckaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
03.01.2010, 18:13:53
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 66
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Vielen Dank, das du mir nochmal helfen möchtest, dein Vorschlag funktioniert zwar, aber nicht so wie ich es brauche.
Denn so wie ich deinen sql-string verstehe addierst du im date_add 7 Tage zum aktuellen Datum hinzu. Ich erhalte also nur Datensätze, wenn diese sich innerhalb von sieben Tagen befinden.
Ich schreibe mein Anliegen mal so auf:
- auf jeden Fall den datumsnächsten Datensatz, egal was für ein vdatum
- Datensatz2 nur, wenn vdatum1 zu vdatum2 < 7 Tage
- Datensatz3 nur, wenn vdatum1 zu vdatum3 < 7 Tage*
*meinetwegen kann hier auch vdatum2 mit vdatum3 verglichen werden, das wäre egal
Der Sinn dahinter ist der: auf unserer Webseite gibt es ein klar begrenztes Feld für Werbung unserer nächsten großen Sportveranstaltung auch wenn diese noch Monate in der Zukunft liegt. Allerdings haben wir an einem Wochenende sogar zwei oder drei große Veranstaltungen. Daher sollen mindestens ein und maximal drei Werbebanner angezeigt werden können, wenn diese Veranstaltungen innerhalb von 7 Tagen liegen.
Wenn die Veranstaltungen länger als 7 Tage auseinander liegen reicht die Anzeige von einer, der nächsten Veranstaltung, da die Werbezeitspanne für die übernächsten Veranstaltungen ausreichend bleiben.
Irgendwie habe ich die Befürchtung, dass das mit sql nicht geht, bin mal gespannt.
Für eure Bemühungen bedanke ich mich schon mal sehr.
Viele Grüße
Bernhard
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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 17:30:20 Uhr.
|