SORU
21 ŞUBAT 2010, Pazar


java.açıklama.Vs java tarih.sql.Tarih

Hangi neden ve ne zaman kullanılmalı? java.util.Date vs java.sql.Date:

CEVAP
21 ŞUBAT 2010, Pazar


Tebrikler, OLANLARI favori benim pet kızdırmak oldun: Tarih sınıf işleme.

Temelde veritabanları genellikle en azından desteküçTarih, Saat ve zaman damgası olan datetime alanları oluşturur. Bunların her biri gerekli OLANLARI ilgili bir sınıf varher biri java.util.Date uzatmak. Her üç hızlı semantik şunlardır:

  • java.sql.Date depolar anlamına gelir TARİH SQL karşılık geliryıl, ay ve günsüreSaat, Dakika, Saniye ve milisaniyeyok sayılır. Ayrıca sql.Date dilimleri bağlı değil.
  • java.sql.Time ZAMAN SQL karşılık gelir ve açık olmalı, sadece bilgi içerirSaat, Dakika, Saniye ve milisaniye.
  • java.sql.Timestamp nanosaniye için kesin tarih olan SQL zaman DAMGASI karşılık gelir (util.Date sadece milisaniye desteklediğini unutmayın!özelleştirilebilir ) hassas.

Bu üç tür ilişki içinde BULUNMAKTAYDI sürücüleri kullanırken en sık karşılaşılan hatalar biri bu tür yanlış işlenmiş.Bu sql.Date bölge özel sql.Time içeren cari yıl anlamına gelir, et cetera, et cetera ay ve gün.

Hangisini kullansak? son olarak:

Alan SQL Türüne göre değişir aslında. PreparedStatement her üç değer için ayarlayıcıları, #setDate() sql.Time sql.Timestamp #setTimestamp() sql.Date, #setTime() için bir varlık vardır.

Yapmak unutmayın kullanırsanız ps.setObject(fieldIndex, utilDateObject); ben herhangi bir normal util.Date için en gerekli OLANLARI sürücüleri edecek mutlu bir şekilde bitirip bunu sanki doğru yazın ama istek verileri sonrasında fark edebilirsiniz aslında eksik bir şeyler.

Gerçekten Tarihler hiç kullanılmaması gerektiğini söylüyorum.

Milisaniye düz longs/nanosaniye kaydedin ve kullandığınız ne olursa olsun onları dönüştürmek diyorum ne (obligatory joda-time plug). Yapılabilir bir hacky yolu uzun ve başka bir, örneğin şu anda 20100221 ve 154536123 olacak gibi zamanı bileşeni olarak tarih bileşeni saklamak için. Bu sihirli numaraları SQL sorgularda kullanılabilir ve başka bir veritabanından taşınabilir olması ve yerli mal/Java Tarih API:s bu kısmı tamamen önlemek izin verir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011
  • infiniTuts

    infiniTuts

    18 Ocak 2012
  • Perihelion

    Perihelion

    23 NİSAN 2008