2017-04-04 7 views
0

Zum Beispiel habe ich eine Tabelle wie folgt:Wie kann man das aktuelle Datum und die aktuelle Uhrzeit mit PostgreSQL DB einfügen und in einem bestimmten Format zurückholen?

CREATE TABLE MESSAGES(
MESSAGE_ID INTEGER PRIMARY KEY, 
SENT TIMESTAMP NOT NULL 
); 

Während in meiner Java-Klasse habe ich als integer und gesendet als Kalender genommen message_id.

Meine Frage geht in etwa so:

Während Einfügen (nur für das Datum Teil angezeigt):

String sql1="insert into messages (message_id,sent) values (?,?)"; 
    Calendar cal=Calendar.getInstance(); 
    ps1.setDate(2, new java.sql.Date(cal.getTimeInMillis())); 

Nachdem der Tabellenansicht eingefügt ist:

message_id gesendet


1  | 2016-12-22 00:00:00 
2  | 2016-6-22 00:00:00 

Während Abrufen (zeigt nur für das Datum Teil):

String sql="select message_id, sent from messages"; 
    Messages msg=new Messages(); 
    Calendar cal=Calendar.getInstance(); 
    Date d=rs.getDate("sent"); 
    String pattern = "yyyy-MM-dd hh:mm:ss a"; 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); 
    String conDate=simpleDateFormat.format(d); 

ich die Termine aber die Zeit ist immer 12.00.00. Ich mag es so in ein Format zeigen, erhalten:

„Die Meldung auf 2016.12.03 19.30.00 Uhr gesendet wurde“

Bin ich etwas falsch gemacht? Jede Art von Hilfe wird geschätzt ... :)

+0

'hh' ist die Stunde in AM/PM Sie wollen' HH': http://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html –

+0

Die Art, wie ich [gelesen habe] Verwenden Sie die Java 8 Date and Time-Klassen] (https://jdbc.postgresql.org/documentation/head/8-date-time.html), wenn Sie die Klassen 'java.time' und den neuesten PostgrSQL-JDBC-Treiber verwenden können, Sie sollten eine 'LocalDateTime' an Ihre vorbereitete Anweisung übergeben und eine' LocalDateTime' aus der Ergebnismenge anfordern. Dies ist eine gute Nachricht, da diese Klassen viel schöner sind als 'Date' und' SimpleDateFormat'. –

Antwort

1

Datum bedeutet nur "Tag" in JDBC. Verwenden Sie den Zeitstempel, wenn Sie auch Zeit haben möchten.

Edit: Was ich rede ist:

und

String sql="select message_id, sent from messages"; 
Messages msg=new Messages(); 
Calendar cal=Calendar.getInstance(); 
java.util.Date d=rs.getTimestamp("sent"); 
String pattern = "yyyy-MM-dd hh:mm:ss a"; 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); 
String conDate=simpleDateFormat.format(d); 

Nichts von alldem ist veraltet, soweit ich weiß, und wenn ja, kann ich nicht mehr haben moderne Lösung. Warten Sie immer noch darauf, dass JDBC die neue Zeit-API unterstützt ... Und getDate/new java.sql.Date wird von der Zeit abgeschnitten, und das ist nicht das, was Sie wollen.

+0

Zeitstempel ist entzogen. Hast du einen anderen Weg es zu tun? Vielen Dank im Voraus –

+0

versuchen Sie mit "Zeitstempel ohne Zeitzone" .Thats, was ich in Postgres verwenden. – Ankur

+0

@SumeetBarua, "Zeitstempel ist veraltet"? In Java oder in PostgreSQL? Das ist neu für mich. –

Verwandte Themen