Welchen Date-Typ

Dagobert

Bekanntes Mitglied
Erstmal FROHE WEIHNACHTEN,

Ich möchte gerne in einer Datenbank u.a. Datumsangaben speichern und später wieder verwenden also differenzen berechnen usw. . Nun bietet Java ja nicht nur eine Datumsklasse an. Welche sollte ich am besten in zusammenarbeit mit SQL benutzen und welchen Datentyp soll ich in SQL verwenden?

Ich habe imo in der Datenbank den Typ Timestamp verwendet.

mfg. Dagobert
 

X3TitanCore

Bekanntes Mitglied
Dann würde ich immer einen Timestamp benutzen. Damit kann man am einfachsten rechnen und hinterher das Ergebnis wieder in ein Datum umwandeln wenn man es braucht.
 

Dagobert

Bekanntes Mitglied
okay danke, und mit welchem Typ sollte ich in Java benutzen? Auch das "Normale" util Date oder ehr Calendar? oder oder oder? :D

Okay du meinst ich soll in java auch nen timestamp benutzen? :D Jetzt komme ich dahinter^^ hat ein bisschen gedauert :D

mfg. Dagobert
 
Zuletzt bearbeitet:

X3TitanCore

Bekanntes Mitglied
Du kannst in Java auch ein long nehmen. Du bekommst ja aus einem Date Objekt den Timestamp als long heraus mit getTime(). Und in der DB halt als Integer speichern.
 

Dagobert

Bekanntes Mitglied
Ich habe gerade dazu etwas interessantes in einem anderem Forum gefunden was ich bis jetzt nicht wusste^^.
Ein TIMESTAMP Feld wird bei jeder Änderung an dem Datensatz auf die aktuelle Zeit gesetzt, aber dies betrifft immer nur das erste TIMESTAMP Feld, falls es mehr als eins in der Tabelle gibt.
Auch nochmal hier nachzulesen.
[link]http://www.sqlteam.com/print/timestamps-vs-datetime-data-types[/link]
Desweiteren habe ich gerade mehr dazu gefunden was mir nicht passt. Also TIMESTAMP scheint nicht für die Datumsspeicherung geignet zu sein.
Ich werde das ganze mal wieder auf DateTime umstellen, aber mein größeres Problem ist dann wie ichs am einfachsten in Java behandelt. Ich habe mich bis jetzt noch nicht wirklich mit dem Thema: Datum beschäftigt. :D

mfg. Dagobert
 

X3TitanCore

Bekanntes Mitglied
Genau deswegen speicher ich immer ein Datum als Integer in einer Datenbank. Ein Timestamp ist ja nichts anderes als ein Int oder in Java halt long. Die Sekunden seit dem 1.1.1970. Warum soll ich das in ein Date Feld packen???? Weil man es besser lesen kann????

Und aus ein Integerfeld aus der DB auszulesen und dann in Java wieder ein Dateobjekt daraus zu machen ist für mich die einfachste Variante. Mal ganz abgesehen wenn es darum geht damit zu rechnen.

MfG
 

frapo

Bekanntes Mitglied
aber dann verlierste doch die ganzen Datumsfunktionen von sql oder? Haste die dann in java nochmal geschrieben?

Eben darum würde ich das nie so machen. Wenn man Timestamp in der DB nutzt, kann man auch immer schön per SQL Abragen auf der DB machen. Was würde es mir nutzen wenn ich statt eines Datums nur einen Long-Wert zurückbekomme? Halte ich für schlecht lesbar.

Wenn natürlich sicher ist, das auf der DB nie Abfragen won Hand laufen werden, könnte man die Variante mit dem Long-Wert andenken.. wie gesagt, ich würde es nie so machen.. man weiß nie, ob man nicht irgendwann doch mal von Hand ran muss oder will.

Gruß
frapo
 

frapo

Bekanntes Mitglied
Na ja ich guck ja nicht direkt in der DB nach nem Datum. Das sollte die Software für mich erledigen.

Das sieht in der Praxis allerdings ganz anders aus. Oft hast du eine DB mit vielleicht mehreren Frontends. Das kann dann beispielsweise eine Java-Anwendung sein, eine PHP-Anwendung, ein Berichtgenerator etc. In so einem Fall kann es dann schwierig werden, wenn andere Frontends das long nicht oder anders interpretieren. Ich habe bisher noch nie mit einer DB gearbeitet, an der ich nicht auch mal mit der Hand ran musste bzw. das meiste machte man direkt per SQL auf der Konsole.

Echte 'Datenbank-Freaks' vertreten nicht umsonst die Ansicht, das die Datenhaltung, also auch die Auswahl und Kontrolle der Datentypen, unbedingt Sache des RDBMS sein sollten.
 

X3TitanCore

Bekanntes Mitglied
Da hast du schon recht. Man hat halt den Vorteil das man schnell mal nachsehen kann welches Datum in dem Feld steht und muß nicht erst den Taschenrechner auspacken. Ist mir in meinen Projekten bisher ganz selten passiert. Ist halt Anwendungsbezogen. Wenn man das braucht dann muß man halt ein date Feld nehmen.

Was die Datenhaltung angeht, so hält ein Timestamp als long genau die gleichen Informationen nur in einer für uns Menschen nicht so leicht lesbaren Form. Der DB ist es egal in welcher Form sie ein Datum speichert. Date Felder sind nur eine Hilfe für uns.

Date beginnt im Jahr 0 0Uhr
Timestamp am 1.1.1970 0Uhr

Alles andere ist gleich. Das eine ist für uns lesbar das andere nicht.

Hier gilt es halt Anwendungsbezogen zu entscheiden. Da Dagobert geschrieben hat das er später differenzen berechnen will, ist es halt leichter mit einem Timestamp zu arbeiten wenn man nicht unbedingt die Lesbarkeit in der DB benötigt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Welchen Hash-Algorithmus? Datenbankprogrammierung 1
G Welchen Treiber? Datenbankprogrammierung 3
G DB2 Connect, welchen treiber? Datenbankprogrammierung 4
berserkerdq2 Was genau muss ich bei date eingeben, wenn ich in Java eine Spalte definiere, die date ist? Datenbankprogrammierung 1
J MySQL - Primary Key Date,Time vs ID Datenbankprogrammierung 16
E Conversion failed when converting date and/or time from character string. Datenbankprogrammierung 3
zhermann Data truncation: Incorrect date value: 'null' for column Datenbankprogrammierung 31
S SQL Date Einträge an Tag x Datenbankprogrammierung 7
L Conversion-Error bei JDBC Date Literals Datenbankprogrammierung 3
J Speicherung von java.sql.Date liefert inkorrekte Ergebnisse Datenbankprogrammierung 4
A WHERE datetime < (util.Date | sql.Date | sql.Timestamp | dateString) Datenbankprogrammierung 2
J WebService + Datenbank und Date-Datentyp vs. long-Datentyp Datenbankprogrammierung 4
C MySQL Fragen zu BLOB zu byte[], Date zu java.util.Date uvm. Datenbankprogrammierung 6
K SQL Problem mit Date Datenbankprogrammierung 3
K Date in SQL-String konvertieren Datenbankprogrammierung 3
Eldorado MySQL HQL Query Tag von Date Datenbankprogrammierung 6
G INSERT DATE in Oracle-DB Datenbankprogrammierung 11
J where Abfrage auf ein mysql date feld Datenbankprogrammierung 5
T SQL Date String in java.util.Date umwandeln Datenbankprogrammierung 3
G Date und Time Felder? Datenbankprogrammierung 3
ARadauer Date Problem bei Oracle DB Datenbankprogrammierung 4
S java.util.date in java.sql.date wandeln Datenbankprogrammierung 5
J Timestamp oder Date Datenbankprogrammierung 2
H Date null = 30.11.0002? Datenbankprogrammierung 6
T Probleme mit Date in H2 Datenbank Datenbankprogrammierung 2
W Leere Date-Felder aus DB einlesen Datenbankprogrammierung 4
J Java und dBase -> Date Datenbankprogrammierung 3
S Umwandlung des Datumsformates util.Date und sql.Date Datenbankprogrammierung 2
RaoulDuke java.sql.Date Datenbankprogrammierung 3
L Datum (String) in MySQL-Tabelle (date) speichern Datenbankprogrammierung 4
H java.sql.Date Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben