php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.06.2006, 08:43  
Erfahrener Benutzer
 
Registriert seit: 27.08.2007
Beiträge: 391
jens76 befindet sich auf einem aufstrebenden Ast
Standard zeit zwischen 2 datetime

hi!

ich habe 2 datetime-felder
also von bis.
dabei gibt das datum den zeitraum in tagen an, in dem zugegriffen werden soll und di zeit jeweils an den einzelnen tagen.

jetzt weiß ich nur nicht ganz wie ich in der abfrage prüfen soll, ob die aktuelle zeit zwischen den beiden zeiten liegt.

also ob 12:00 zwischen 10:00 und 14:00 liegt, und wie sich das ganze verhält, wenn eine zeitspanne über nacht geht also zb von 22:00-06:00

kann mir wer mal bitte einen tip geben?

Danke
jens76 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 07.06.2006, 09:16  
Gast
 
Beiträge: n/a
Standard

Warum speicherst Du nicht entweder das Datum in der Datenbank (also nicht irgendwie eine Spanne in ein datetime gepresst sondern direkt das Datum) oder die Spanne in bspw Minuten als Zahl. datetime ist kein timespan
  Mit Zitat antworten
Alt 07.06.2006, 09:26  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Da beim DATETIME-Format ja das Datum mitenthalten ist, spielt es ja keine Rolle, ob die Periode über mehrere Tage geht. Du formatierst das aktuelle Datum einfach ebenfalls ins entsprechende Format ung fragst mit between ab:
Code:
"SELECT 
...
	WHERE " . date("Y-m-d H:i:s") . " BETWEEN datum1 AND datum2"
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 07.06.2006, 09:34  
Erfahrener Benutzer
 
Registriert seit: 27.08.2007
Beiträge: 391
jens76 befindet sich auf einem aufstrebenden Ast
Standard

1. ist die db nich von mir programiert und die menge an daten zu groß um es zu ändern.

2. eine abfrage mit between funktioniert doch meines wissens nach nur wenn datum 2 größer ist als datum 1

ich wollte es eigentlich so machen das ich mit between das datum prüfe ob es zwischen den beiden daum liegt, aber wie soll ich das mit der zeit prüfen? vorallem wenn diese über mitternacht geht?
jens76 ist offline   Mit Zitat antworten
Alt 07.06.2006, 09:45  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von jens76
eine abfrage mit between funktioniert doch meines wissens nach nur wenn datum 2 größer ist als datum 1
Wenn du ein von- und ein bis-Datum hast, wird das zweite wohl grösser sein, als das erste.
Zitat:
Zitat von jens76
ich wollte es eigentlich so machen das ich mit between das datum prüfe ob es zwischen den beiden daum liegt, aber wie soll ich das mit der zeit prüfen? vorallem wenn diese über mitternacht geht?
Genauso, wie ich geschrieben habe, da die Zeit ja auch im DATETIME-Feld enthalten ist.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 07.06.2006, 09:51  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Dann trenn die Felder auch, denn dein von (DATETIME) bis (DATETIME) ist irreführend. Die Zeit hat ja so direkt nichts mit dem Datum zu tun.

Ich würde erstmal Zeit und Datum trennen (du hast dann 4 Felder) und in der 1. Abfrage
WHERE (testdatum BETWEEN startdate AND enddate) AND IF (starttime <= endtime, testzeit BETWEEN starttime AND endtime, testzeit NOT BETWEEN endtime AND starttime)

Also zu erst der Check nach Datum, danach wenn die Startzeit <= Endzeit ist (also zB zwischen 14.00 und 16.00 Uhr) ein einfaches Between wieder (15.00 Uhr wäre dazwischen), ansonsten einfach die Between-Anweisung und die Zeiten umdrehen.
Aus starttime=16.00 und endttime=14.00 Uhr (zB wenn zwischen 14-16 Uhr Mittagspause ist) wird starttime=14.00 und endtime=16.00 Uhr. 15 Uhr darf jetzt nicht dazwischen liegen und folglich liefert '15:00' NOT BETWEEN '14:00' und 16:00' auch genau das gewünschte Ergebnis.

(korrigiert mich, wenn ich einen Denkfehler drin habe)


Der else-Block des IF stimmt nicht denke ich. Bin aber nicht sicher und bekomm gleich Besuch. Nachher.
Zergling-new ist offline   Mit Zitat antworten
Alt 07.06.2006, 09:55  
Erfahrener Benutzer
 
Registriert seit: 27.08.2007
Beiträge: 391
jens76 befindet sich auf einem aufstrebenden Ast
Standard

bin ich zu blöd es zu kapieren oder zu erklären?

das mit dem datetime ist mir ja klar aber das wäre dann eine zeitspanner von datetime bis datetime.
ich will aber in der spanne von datum 1 bis datum 2 immer nur in den uhrzeiten von bis ein ergebnis. und das geht mit between dateime nicht, da er dann auch die bringt, wo das datum zwischen ist, aber nciht die zeit!

also nochmals die zeit ist immer nur eine spanne in der tagesspanne
jens76 ist offline   Mit Zitat antworten
Alt 07.06.2006, 15:35  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Zitat:
Zitat von jens76
ich will aber in der spanne von datum 1 bis datum 2 immer nur in den uhrzeiten von bis ein ergebnis. und das geht mit between dateime nicht, da er dann auch die bringt, wo das datum zwischen ist, aber nciht die zeit!
Ich verstehe ehrlich gesagt gar nichts. Zeige dieses Problem bitte mal an einem Beispiel.
xabbuh ist offline   Mit Zitat antworten
Alt 07.06.2006, 15:39  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich habe ihn so verstanden: Er möchte einen Datums-Zeitraum eingeben und an jedem dieser Tage, die in dem Zeitraum vorkommen, möchte er eine jeweilige uhrzeitliche Spanne festlegen.

Also Montag, 5. Juni bis Freitag, 9. Juni, 14.00 Uhr bis 15.00 Uhr.
So wie ich ihn verstanden habe, hat er bisher
2006-06-05 14:00:00 und 2006-06-09 15:00:00 Uhr in diesem Format gespeichert.

Jetzt möchte er wohl schauen, ob der 4. Juni, der 5. Juni 12 Uhr oder 15 Uhr in dieser Zeitspanne liegt.
Der 4. Juni liegt schon nicht im Datumsbereich, der 5. Juni schon, aber nicht im Uhrzeitbereich. Der 5. Juni 15 Uhr passt gerade noch rein.
Zergling-new ist offline   Mit Zitat antworten
Alt 08.06.2006, 10:49  
Erfahrener Benutzer
 
Registriert seit: 27.08.2007
Beiträge: 391
jens76 befindet sich auf einem aufstrebenden Ast
Standard

danke Zergling! genaus so habe ich es gemeint! jetzt fehlt mir nur noch der lösungsansatz!

und danke für deine bessere beschreibung! war gestern ein harter tag und ich hatte nicht die "fantasie" es so toll wie du zu schreiben!

Also nochmal....

wer hat eine Idee Wie ich das abfragen kann/soll?!?!
jens76 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
nach zeit gruppieren fuzzycontrol Datenbanken 3 25.09.2006 15:10
datetime - komplexes select hans_ Datenbanken 5 17.04.2006 22:47
php5 braucht 4 mal so lange wie php4? CC84 PHP Tipps 2006 4 12.04.2006 09:55
[MSSQL + PHP] Konflikt zwischen Datentypen / Probleme bei IN winfo_cologne PHP Tipps 2006 3 29.03.2006 14:05
[Erledigt] Funktion zum formatiern der Zeit aus einer MSSQl DB PHP Tipps 2005-2 1 24.09.2005 14:24
[Erledigt] SQL =&gt; CHARACTER zu DATETIME Datenbanken 1 23.08.2005 13:29
DATETIME auf "0" setzen? Datenbanken 9 03.06.2005 15:56
[Erledigt] Zeit von deutschland nach GMT+7 umwandeln PHP Tipps 2005 16 08.05.2005 01:33
Datenfeld mit der aktuelsten Zeit auswählen Datenbanken 3 25.04.2005 23:14
Befehl erst nach Bestimmter Zeit ausführen? PHP Tipps 2005 21 28.02.2005 00:13
[Erledigt] Zeit + Zeit = Horror PHP Tipps 2004 25 22.09.2004 14:18
zeit bzw. zeitzone PHP Tipps 2004 3 08.09.2004 10:19
Zeit von PDT nach GMT+2 umwandeln Mutatos PHP-Fortgeschrittene 1 07.09.2004 17:11
[Erledigt] Erstellungszeit: Zeit an andere Seite weitergeben? PHP Tipps 2004 3 30.08.2004 08:40
große XML-Datei in annehmbarer Zeit durchsuchen PHP-Fortgeschrittene 5 02.06.2004 15:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
zeit zwischen dates, datetime zeitspanne, php zeit zwischen, zeitspanne datetime, zeit zwischen 1. und 2. date, php if zwische zweit zeiten, php aktuelle zeit zwischen, zeit zwischen 2 datetime, sql zeiträume umkehren, abstand zwischen 1. und 2. date, tage zwischen datetime, php wenn aktuelle zeit zwischen, zeit bis zum zweiten date, datum aus datetime mit zeit mssql, wie lange zeit zwischen dates, zwischen einer zeit php, php wenn zeit zwischen, zeit zwischen den dates, datetime zeitraum, zeitberechnung zwischen 2 datums

Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.