2016-12-23 1 views
1

In meinem lokalen Setup verwende ich eine einfache H2-Datenbank. Die "gehostete" Lösung wird eine andere (ähnliche, aber nicht dieselbe) Datenbank haben.Geben Sie das maximale Datum ein (unabhängig von der Datenbank)

Ich muss das maximal mögliche Datum in eine DateTime-Spalte einfügen. Ich habe versucht,

Instant.MAX 

Dies führt jedoch in -169104626-12-11 20 zu verwenden: 08: 15,99999999 in der Spalte.

Gibt es eine solide Option zum Einfügen eines maximal möglichen Datums?

+0

Was bewirkt 'Instant.MIN'? –

+1

Was soll die symbolische Bedeutung eines solchen Augenblicks sein? Unendliche Zukunft? –

+0

Warum fügen Sie '31.12.9999 23: 59: 59' nicht ein, die Sie als Konstante in Ihrer Java-Anwendung speichern können? –

Antwort

1

max Datum (unabhängig von der Datenbank)

Keine solche Sache. Der Versuch, ein maximales Datum festzulegen, hängt absolut von der Datenbank ab.

Das Thema Datum-Uhrzeit-Behandlung wird vom SQL-Standard (leider) kaum berührt. Die Datentypen und das Verhalten für Datum-Uhrzeit variieren weit unter verschiedenen Datenbanken. Die minimalen und maximalen Werte können zwischen verschiedenen Datenbanken radikal unterschiedlich sein. Sogar innerhalb einer einzelnen Datenbank kann der Min/Max-Bereich der verschiedenen Datum-Zeit-Datentypen dramatisch unterschiedlich sein. Zum Beispiel haben einige Datenbanken alte proprietäre Datum-Zeit-Typen sowie neuere gebräuchlichere oder Standardtypen, die sich ziemlich unterschiedlich verhalten.

Java selbst hat sehr unterschiedliche Sätze von Datum-Zeit-Typen:

  • Die lästigen Legacy-Typen (java.util & java.sql)
  • Die modernen klug gestalteten java.time Typen.

Die Min/Max-Werte unterscheiden sich.

Gibt es eine solide Option zum Einfügen eines maximal möglichen Datums?

Nr

Wenn Sie versuchen, den Maximalwert als eine Art Flagge wie „unbestimmter späterer Zeitpunkt“ zu verwenden, um ein NULL zu vermeiden, wählen Sie stattdessen ein beliebiges Datum weit genug in der Zukunft zu übertreffen irgendeinen legitimen Wert, aber nicht so weit, dass er die Grenzen irgendeiner Datenbank überschreitet, die Sie möglicherweise verwenden werden. Definieren Sie eine Konstante für diesen Wert in Ihrem Java-Code und in Ihrer Datenbank und dokumentieren Sie sie gründlich.

Ich schlage vor, mit einem vierstelligen Jahr zu bleiben, um alle Arten von Verwirrung und Probleme wie das Brechen von Berichten & GUIs durch Überschreiten der Feldbreite der Anzeige zu vermeiden. So etwas wie 9999. Oder vielleicht 2666, weil es für den menschlichen Leser wegen der infamy of 666 so bemerkenswert ist.

Durchsuchen Sie Stack Overflow nach Wörtern wie Java, min und max, um weitere Informationen zu erhalten. Wie this und this und this und this und this. Diese Frage ist im Grunde ein Duplikat anderer Fragen.

Verwandte Themen