2013-07-01 11 views
5

Mam tabelę Oracle o nazwie EVENT_TABLE_T. Ma kolumnę o nazwie LAST_UPDATE_DT. Jedna wartość próbki z tej kolumny to: 01-JUL-13 11.20.22.37448900 AM. Istnieje ponad 700 wierszy, które mają tę samą wartość znacznika czasu. Chciałbym zaktualizować tę wartość do 45 dni przed tą datą, używając instrukcji SQL. Na przykład 01-JUL-13 11.20.22.37448900 AM, po mojej arytmetyki umysłowej, powinno stać się: 15-May-13 11.00.00...... (dokładnie 45 dni). Jeśli to się powiedzie, chciałbym zastosować aktualizację o innej wartości w LAST_UPDATE_DT, która odzwierciedla wartość, która powraca wstecz 46 dni.Jak zaktualizować wartość Oracle Timestamp z bieżącego do znacznika czasu z przeszłości

Mam nadzieję, że uda mi się zadać to pytanie, aby nauczyć się podstaw dat i znaczników czasowych Oracle i zastosować je do moich prac przetwarzania wsadowego. Chciałbym móc uruchomić tę aktualizację SQL SQL Developer, a także z poziomu Java PreparedStatement.

Z góry dziękuję za pomoc.

Odpowiedz

14

Można po prostu odjąć przedział czasu od datownik.

UPDATE EVENT_TABLE_T 
SET LAST_UPDATE_DT = last_update_dt - interval '45' day 
WHERE LAST_UPDATE_DT = TO_TIMESTAMP('01-JUL-2013 11:20:22:37448900','DD-MON-YYYY HH24: MI:SS:FF') 
+0

Dokładnie to, co chciałem. Odpowiedź Raviego przesunęła mnie w dobrym kierunku, a Arban uzupełnił twoją odpowiedź. – ilango

2

spróbować czegoś jak:

UPDATE EVENT_TABLE_T 
SET LAST_UPDATE_DT = TO_TIMESTAMP('15-MAY-2013 11:00:00:00','DD-MON-YYYY HH24:MI:SS:FF') 
WHERE LAST_UPDATE_DT = TO_TIMESTAMP('01-JUL-2013 11:20:22:37448900','DD-MON-YYYY HH24: MI: SS:FF') 

podobnym do aktualizacji chcesz wracać do 46 dni.

Sprawdź składniowej błędu czy jakiejkolwiek

+0

Twoje zestawienie służy do ustawienia (aktualizacji) mojej bieżącej daty na określoną datę w przeszłości. Nie dokładnie to, co chciałem, ale uzyskałem inną ważną koncepcję z twojej odpowiedzi. Doceniony. – ilango

Powiązane problemy