Datum-Zeit-Typ
für Datum-Zeit-Werte, Typen Einsatz Datum Zeitdaten Ihrer Spalt und Verwendung Datum Zeitklassen in Java zu definieren. Der Job Ihres JDBC-Treibers besteht darin, zwischen diesen Typen zu vermitteln.
Sie versuchen, Zeichenfolgen anstelle von Datum-Uhrzeit-Objekten zu übergeben.
Halboffen Logik
In Datum Zeitarbeit, verwenden Halboffen Ansatz, bei dem der Anfang inklusive ist, während das Ende exklusiv ist. Das Mittagessen beginnt also um 12 Uhr mittags und läuft bis zum ersten Moment um 13 Uhr, aber nicht inklusive. Eine Woche beginnt am Montag und läuft bis zum nächsten Montag.
SELECT * FROM tbl_
WHERE when_ >= ? -- Pass start moment. Inclusive.
AND when_ < ? -- Pass stop moment. Exclusive.
;
Der SQL-Befehl BETWEEN ist "geschlossen", dh sowohl der Anfang als auch das Ende sind inklusive; nicht gut für Datum-Uhrzeit-Arbeit.
Parse Strings bisher Zeit
Sie benötigen eine Benutzereingabe in Datum Zeitobjekte zu verwandeln. Möglicherweise möchten Sie einen String-Typen nach Benutzer analysieren. Oder Sie möchten ein Datum-Zeit-Widget verwenden. In Ihrem Fall wird das Parsen von Strings offensichtlich benötigt. Durchsuchen Sie den Stack-Überlauf nach , um Hunderte von vorhandenen Fragen und Antworten zu finden.
SQL & JDBC
Die Instant
Klasse in Java stellt einen Moment auf der Timeline in UTC.Entspricht der älteren Klasse java.util.Date
, aber mit einer feineren Auflösung von Nanosekunden statt Millisekunden.
Wenden Sie eine Zeitzone ZoneId
an, um ein Objekt ZonedDateTime
zu erhalten. Entspricht der Legacy-Klasse GregorianCalendar
.
ZonedDateTime zdt = ZonedDateTime.parse(input , …) ;
myPreparedStatement.setObject(… , zdt.toInstant()) ;
Und ...
Instant instant = myResultSet.getObject(… , Instant.class) ;
ZonedDateTime zdt = instant.atZone(ZoneId.of("America/Montreal")) ;
Tipps
beachten Namenskonventionen. In Java beginnen Variablen mit einem Kleinbuchstaben.
Vermeiden Sie die Benennung von Spalten in der Datenbank mit reservierten Wörtern. Der einfachste Weg, um alle reservierten Wörter vollständig zu vermeiden, besteht darin, an alle Namen aller Ihrer Datenbankobjekte einen abschließenden Unterstrich anzuhängen. Der SQL-Standard verspricht ausdrücklich, niemals einen abschließenden Unterstrich zu verwenden.
Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, für die richtige Syntax in der Nähe von 'Date> = Jun 12, 2017 BETWEEN Datum <= 14 Jun. 2017' in Zeile 1 –
https://www.w3schools.com/sql/ sql_dates.asp –