2017-09-20 1 views
-2

Ich möchte das aktuelle Datum und die aktuelle Uhrzeit im Format "JJJJ-MM-TT HH: MM: SS" mit Java einfügen. Welcher Datentyp ist dafür geeignet und welche Methode von PreparedStatement muss ich verwenden?Einfügen des aktuellen Datums und der aktuellen Uhrzeit in die Oracle-Datenbank mit Java

+0

warum nicht einfach 'sysdate' verwenden, anstatt es aus Java zu übergeben – GurV

+0

Wie kann ich SYSDATE mit vorbereiteter Anweisung verwenden? – Nidheesh

+0

Siehe meine Antwort unter – GurV

Antwort

1

Ich nehme an, der Datentyp der Spalte ist DATE in der Datenbank. Wenn Sie das aktuelle Datum und die Uhrzeit einfügen möchten, können Sie entweder Orakel in SYSDATE gebaut verwenden:

ps = conn.prepareStatement('insert into your_table(date_col, ...) values (sysdate, ...)'); 

Oder parametrieren und verwenden setTimestamp() auf PreparedStatement:

ps = conn.prepareStatement('insert into your_table (date_col, ...) values (?, ...)'); 
ps.setTimestamp(1, new java.sql.Timestamp(System.currentTimeMillis())); 

Wie @Basil vorgeschlagen in den Kommentaren unten können Sie verwenden auch java.time.Instant Klasse:

ps.setObject(1 , Instant.now()); 

und beim Abrufen verwenden ResultSet#getObject(int/String, Class<T>):

+0

Ich überprüfte mit dem zweiten Fall. Es speichert Wert im Format "JJJJ-MM-TT 00:00:00". – Nidheesh

+0

@Nidheesh - Sie würden Timestamp .. aktualisiert meine Antwort – GurV

+1

ok danke. Es funktioniert – Nidheesh

0

Sie können Ihr erwartetes Datum Uhrzeit Format mit java.util.Date Klasse erhalten. Wenn Sie nur Datum speichern wollen, dann müssen Sie java.util.date-java.sql.date konvertieren ..

Wenn Sie alle speichern, die Uhrzeit und das Datum ist dann für String gehen (dh VARCHAR-Datentyp in Oracle-Tabelle) ..

+0

Ich empfehle, von den längst überholten 'Date' Klassen Abstand zu nehmen. Es ist besser, die moderne Java-API für Datum und Uhrzeit zu verwenden, z. B. ein 'Instant'. Dies erspart Ihnen auch die Konvertierung zwischen zwei verschiedenen "Date" -Typen. –

2

Der moderne Ansatz verwendet java.time-Klassen.

Den aktuellen Moment in UTC erhalten Sie unter Instant.now().

myPreparedStatement.setObject(… , Instant.now()) ; 

Rufen Sie diesen Wert ab.

Instant instant = myResultSet.getObject(… , Instant.class) ; 

Shop, die in einer Spalte von Standardtyp TIMESTAMP WITH TIME ZONE oder ähnlichem.

Verwandte Themen