Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara mengubah format Tanggal Oracle ke Java?

tl;dr

Tidak, Anda tidak.

  • Basis data seperti Oracle menyimpan nilai tanggal-waktu dengan nilai biner yang ditentukan secara internal, bukan sebagai teks biasa.
  • Oracle DATE type berisi waktu dan tanggal.

DATE =tanggal + waktu

DATE ketik dalam database Oracle salah nama. Ini memegang lebih dari satu tanggal (tahun, bulan, dan hari-bulan).

Jenis ini mewakili tanggal dengan penyelesaian waktu menjadi detik penuh. Jenis ini tidak memiliki konteks zona waktu atau offset-dari-UTC. Jadi tipe ini tidak bisa digunakan untuk merepresentasikan suatu momen, titik tertentu pada timeline. (Untuk melacak momen, gunakan Oracle ketik TIMESTAMP WITH TIME ZONE .)

Perhatikan bahwa penamaan Oracle ini berbeda dari standar SQL. Dalam standar, DATE type adalah nilai hanya tanggal, tanpa waktu dan tanpa zona waktu atau offset.

java.time.LocalDateTime

Jadi jenis ini dipetakan ke LocalDateTime di Jawa.

Pengambilan.

LocalDateTime ldt = myResultSet.getObject( … , LocalDateTime.class ) ;

Penyimpanan.

myPreparedStatement.setObject( … , ldt ) ;

Teks

Perhatikan bahwa dalam kode di atas kita menggunakan objek pintar daripada string bodoh.

Objek tanggal-waktu seperti LocalDateTime bukan String dan tidak memegang teks. Mereka secara internal mewakili nilai mereka dengan cara mereka sendiri. Anda dapat mengurai string sebagai objek tanggal-waktu, dan Anda dapat meminta objek tanggal-waktu untuk menghasilkan teks. Tetapi teks dan objek tanggal-waktu terpisah dan berbeda.

java.time kelas menggunakan ISO 8601 standar format saat mengurai/menghasilkan string.

String output = ldt.toString() ;

Penguraian.

Anda dapat menghasilkan teks dalam format lain. Anda dapat menentukan format kustom Anda sendiri dengan memanggil DateTimeFormatter.ofPattern . Biasanya lebih baik memformat secara otomatis dengan memanggil DateTimeFormatter.ofLocalized… metode.

Ini telah dibahas berkali-kali di Stack Overflow. Jadi, telusuri untuk mempelajari lebih lanjut.

LocalDateTime ldt = LocalDateTime.parse( "2020-01-23T01:23:45.123456789" ) ;

Tentang java.time

java.time framework dibangun ke dalam Java 8 dan yang lebih baru. Kelas-kelas ini menggantikan warisan lama yang merepotkan kelas tanggal-waktu seperti java.util.Date , Calendar , &SimpleDateFormat .

Untuk mempelajari lebih lanjut, lihat Tutorial Oracle . Dan cari Stack Overflow untuk banyak contoh dan penjelasan. Spesifikasinya adalah JSR 310 .

Joda-Time proyek, sekarang dalam mode pemeliharaan , menyarankan migrasi ke java.time kelas.

Anda dapat menukar java.time objek langsung dengan database Anda. Gunakan driver JDBC sesuai dengan JDBC 4.2 atau nanti. Tidak perlu string, tidak perlu java.sql.* kelas. Hibernate 5 &JPA 2.2 mendukung java.time .

Di mana mendapatkan kelas Java.time?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya menghapus duplikat dari listagg

  2. Oracle:Menggabungkan Dua Tabel dengan Kolom Berbeda

  3. Tipe data angka muncul sebagai # di SQL Plus

  4. JDBC Thin Oracle 11g

  5. Subquery Oracle tidak melihat variabel dari blok luar 2 level ke atas