Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Datum und Zeit in einer Tabelle - best practice

Empfohlene Antworten

Veröffentlicht

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.

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

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:

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

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.