geloescht_JesterDay Geschrieben 5. Oktober 2006 Teilen Geschrieben 5. Oktober 2006 Hallo, ich bin grad am überlegen, wie ich Datum und Zeit am besten in einer Tabelle unterbringe. Klar wird mir jeder jetzt gleich Datetime an den Kopf werfen, aber ich hab bis jetzt immer nicht Datetime genommen, sondern ein Feld Date und ein zweites für Time. Jetzt bin ich grad am überlegen, ob diese Art wirklich die bessere ist. Date bzw. Time ist ja nichts als eine Unterat von Datetime (Zumindest in der Programmierung). Wenn ich aber bei einer Auswahl auf eine Tabelle nur auf ein bestimmtes Datum beschränken will, ist es ja einfacher ein Date-Feld zu haben als ein Datetime-Feld. Mit einem Date-Feld sieht das ja so ung. aus: SELECT * FROM Tabelle Where DateField = CURRENT_DATE wohingegen es mit einem Datetime-Feld so aussieht: SELECT * FROM Tabelle Where DATE_FORMAT(DatetimeField, '%Y-%m-%d') = CURRENT_DATE Da solche Abfragen ja fast nur nach einem Datum geschehen, hab ich mir mal überlegt, es so zu trennen (in Date und Time). Jetzt bin ich mir nicht mehr sicher, weil eine Sortierung und Abfragen in einem bestimmten Zeitraum anders vielleicht einfacher wären. Ich bin mir darüber im Klaren, dass die Unterschiede bei der Performance wohl eher minimal sind. Dennoch würde mich mal interessieren, was andere dazu sagen und wie ihr das so macht. EDIT: Ach ja, ich nutze gerade MySQL, falls das jemanden interessiert. Denke aber, dass dies DB übergreifend ist ansich. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ShaaitanTX Geschrieben 5. Oktober 2006 Teilen Geschrieben 5. Oktober 2006 Da solche Abfragen ja fast nur nach einem Datum geschehen, hab ich mir mal überlegt, es so zu trennen (in Date und Time). Jetzt bin ich mir nicht mehr sicher, weil eine Sortierung und Abfragen in einem bestimmten Zeitraum anders vielleicht einfacher wären. Vielleicht versteh ich das jetzt grundsätzlich falsch, aber denke für deine Anforderungen [die Abfragen über das Date] ist es eigentlich ziemlich egal. Entweder du nimmst das DateTime-Format und fischt dann in einer etwas längeren Abfrage das Datum heraus oder der sort-befehl wird etwas länger wegen dem 2ten Kriterium. Die Unterschiede würden meiner Meinung nach kaum ins Gewicht fallen. Ich denke ich würde mich aber auch für deinen Weg entscheiden ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Musor Geschrieben 5. Oktober 2006 Teilen Geschrieben 5. Oktober 2006 Eine etwas schlechtere Lösung ist die beiden Lösungen zu nehmen. Also drei Spalten datetime,date,time. Ist zwar redundant und unüblich, aber ein Vorschlag. :floet: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 5. Oktober 2006 Autor Teilen Geschrieben 5. Oktober 2006 Entweder du nimmst das DateTime-Format und fischt dann in einer etwas längeren Abfrage das Datum heraus oder der sort-befehl wird etwas länger wegen dem 2ten Kriterium. Die Unterschiede würden meiner Meinung nach kaum ins Gewicht fallen. Das sehe ich auch so, aber vielleicht hat ja irgendjemand eine besondere Erfahrung gemacht o.ä. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 6. Oktober 2006 Teilen Geschrieben 6. Oktober 2006 Ich bin zwar kein MySql Freak, aber du kannst von der Theorie her auch dein Datum in einen INT casten und damit dann deine Abfrage machen. Ein Datum wird intern ja in der Regel als float abgespeichert wobei der Vorkommaanteil das Datum und der Anteil nach dem Komma die Uhrzeit repraesentiert. Also etwas in der Richtung: SELECT * FROM Tabelle Where DateField > 38994 AND DateField < 38995 So sollte die Abfrage dann performanter sein als irgendwelche Stringvergleiche. Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 9. Oktober 2006 Autor Teilen Geschrieben 9. Oktober 2006 ...aber du kannst von der Theorie her auch dein Datum in einen INT casten und damit dann deine Abfrage machen. Ja, in der Theorie geht das, aber in der Praxis wohl eher nicht. Zumindest interessiert es meinen Client (MySQL Query Browser) nicht, wenn ich ein Datetime Feld mit einem Integer vergleiche. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 9. Oktober 2006 Teilen Geschrieben 9. Oktober 2006 Nuja, ich sagte ja, dass ich keine Ahnung von MySQL hab. Der MS SQL Server frisst das halt so Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.