2012-05-03 26 views
17

Oracle 10g Tabloda DATE türünü kullanırken sorun yaşıyorum. Sadece DATE alan mağazamı otomatik olarak zaman kaybetmeden sadece DATE istiyorum.Tarih olarak tarih türü Oracle'da

çok çözüm var, ben TO_CHAR ve TO_DATE veya TRUNC kullanmak gibi bunu biliyorum ama verilerini eklemek veya güncellemek için bu kadar prosedürleri kullanarak ediyorum karşılaştığı ve hepsi güncellemek için zamanım yok.

Bu sorunu nasıl çözebilirim?

+0

Şahsen ben hala tarih tipini kullanıyorum ve zamanı 0'a sıfırladım. – ericosg

+0

@ericosg Saati 0'a nasıl sıfırlayabilirsiniz? –

+1

Bence Rob van Wijk oldukça iyi cevap verdi – ericosg

cevap

23

iyi çözüm olacaktır:

  1. kaldır DATE sütunundan her zaman (update yourtable set yourdatecolumn = trunc(yourdatecolumn))

  2. sütun üzerinde bir denetim kısıtlaması koyarak gelecekteki tüm tarih hiçbir zaman bir kısmını içeren sağlamak check (yourdatecolumn = trunc(yourdatecolumn))

  3. tüm INSERT ve UPDATE ifadelerinizi ayarlayarak ya da yalnızca TRUNCed tarihlerini eklemek için şanslıysanız API'nizi ayarlayın.

    1. (İsteğe) DATE sütundan tüm kere kaldırın: için

    en kolay çözüm olacaktır.

  4. ayarlayan bir önceki satır ekleme veya güncelleme veritabanı tetikleyicisi oluşturun :new.yourdatecolumn := trunc(:new.yourdatecolumn);

+0

Çok teşekkürler, benim için en iyi çözüm: önce tüm DATE sütununu güncelleyin ve sonra bir satır eklemeden önce tetiği ekleyin :) –

+0

Haklısınız. Siparişi değiştirdim. –

+1

Bazı sürümler, denetim kısıtlamalarını yürütme planına eklediğinde (örneğin, "nerede konumunuzu değiştirdiyseniz" ...) sonuç olarak hatalı küçük bir önemlilik hesaplaması yapabileceklerini unutmayın. Ben 10.1 –

-3

ben bu

ekin gibi kullanın: Insert into table (name_date) values(to_date(current_date,'dd/mm/yyyy')); güncelleme: update table set name_date=to_date(current_date,'dd/mm/yyyy') where id=1;

... hepsi

İlgili konular