2017-06-27 13 views
-2

私は現在の日付をpostgresqlデータベースに保存する必要がありました。どの形式でpostgresqlの日付形式および取得方法と一致するように日付を使用しますそれはjavaでそれ。今日の日付を生成してpostgreSQLデータベースに保存する方法

date = Date.valueOf(LocalDate.now()); 
String SQL = "insert into aqitable values(?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
     jdbcTemplateObject.update(SQL,state,city,location,date,pm10,pm2dot5,no2,o3,co,so2,nh3,pb,AQI); 
+0

私たちにいくつかのコードを示してください。あなたはJPAまたはJDBCを使っていますか? –

+3

Javaのように、Postgres Dateは挿入時に組み込みの書式を持っていません。文字列ではなく、日付として挿入されます。 –

+1

'java.sql.Date'? – MadProgrammer

答えて

1

TL; DRませ文字列が取り付けられていない

myPreparedStatement.setObject(
    1 , 
    LocalDate.now(
     ZoneId.of("America/Montreal") 
    ) 
) 

詳細

。したがって、 "フォーマット"は必要ありません。

データベースに日時の値を格納するには、日時データ型の列を定義し、JDBC driverを介して日時Javaオブジェクトを渡します。

現在の日付を取得するには、タイムゾーンが必要です。任意の瞬間について、日付は地球の周りでゾーンごとに異なります。

ZoneId z = ZoneId.of("America/Montreal") ; 
LocalDate ld = LocalDate.now(z) ; 

JDBCドライバはJDBC 4.2に準拠しており、後に、直接、現代java.time型を渡す場合。 java.sql.PreparedStatement.setObjectに電話してください。

myPreparedStatement.setObject(… , ld) ; 

準拠していない場合は、面倒な従来のjava.sql型に簡単に戻ってください。古いクラスに追加された新しいメソッドを使用してjava.timeに/からjava.timeに変換します。この場合、java.sql.Date.valueOf

myPreparedStatement.setDate(… , java.sql.Date.valueOf(ld)) ; 
関連する問題