Zum Inhalt springen

Datum und Zeit in einer Tabelle - best practice


geloescht_JesterDay

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.ä.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

...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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...