2017-10-16 3 views
0

Ich versuche alle Datensätze nach 6 Monaten in meiner Tabelle für ORACLE zu löschen.Datensätze nach 6 Monaten löschen Oracle

Ich habe derzeit

delete from table t 
where to_date(substr(t.DATE_SENT,1,10),'MM/DD/YYYY') < add_months(trunc(sysdate), -6); 

Das String-Format in dieser Tabelle ist '12/21/2015 12:00:00 AM'.

HINWEIS Ich verstehe, dass dies ein DATETIME und nicht ein varchar2 sein sollte, aber es ist einfach ein varchar2, also versuche ich, eine Arbeit um es für jetzt zu finden.

Diese Abfrage scheint etwas für select * zu arbeiten, aber dann stürzt mit SQL

Error: ORA-01830: date format picture ends before converting entire input string

Jede Hilfe würde geschätzt.

+1

Ich würde vermuten, dass Sie Werte liegen 1/1/2015 in den Daten haben. –

+0

Versuchen Sie, Datensätze zu finden, bei denen das Datumsformat nicht mit 'select * aus der Tabelle übereinstimmt, wo nicht regexp_like (date_sent, '^ [[: digit:]] {1,2}/[[: digit:]] {1, 2}/[[: Ziffer:]] {4} ') '. –

Antwort

3

Keine Notwendigkeit von SUBSTR. verwenden Sie direkt TO_DATE für das Format.

DELETE FROM t 
     WHERE TO_DATE (t.DATE_SENT, 'MM/DD/YYYY HH:MI:SS AM') < 
       ADD_MONTHS (TRUNC (SYSDATE), -6); 
+0

'HH24' und' AM' machen zusammen keinen Sinn; meinst du "HH12"? – MT0

+0

Das war ein Fehler. Ich habe schon geändert..Aber irgendwie fühlen sich die Daten hier aus. –

+0

Das hat geklappt! Vielen Dank! Nah aber nicht nah genug. Ich schätze die Hilfe! –

Verwandte Themen