2015-12-10 9 views
6

Warum ist der SQL-Server unten, der einen ORA-01810-Fehler generiert? Ich recherchierte den Fehler und ich bin mit verschiedenen Datumsformate für jedes Datum einfügenORA-01810: Formatcode wird zweimal angezeigt

INSERT INTO bag_grte_clm 
(
    schd_dprt_ldt, 
    arr_trpn_stn_cd, 
    bkg_crtn_gdt, 
    sbmt_bag_grte_clm_dt, 
    bag_grte_clm_stt_cd, 
    lst_updt_gts, 
    bag_grte_clm_gts, 
    dprt_trpn_stn_cd 
) 
VALUES (
    TO_DATE('2015/12/06', 'yyyy/mm/dd'), 
    'YUL', 
    TO_DATE('2015-11-15', 'yyyy-mm-dd'), 
    TO_DATE('120615', 'MMDDYY'), 
    'DENIAL', 
    (current_timestamp), 
    TO_TIMESTAMP('20151206 00:00:00', 'yyyymmdd hh:mm:ss'), 
    'ATL' 
) 

Antwort

20

TO_TIMESTAMP ('20151206 00.00.00', 'yyyymmdd hh: mm: ss')

Es ist falsch, auf zwei Arten:

1. Falsches Format Code

Sie haben die Maskenmaske MM zweimal wiederholt. MM ist Monat und MI ist Minuten.

 
SQL> SELECT TO_TIMESTAMP('20151206 00:00:00', 'yyyymmdd hh:mm:ss') FROM dual; 
SELECT TO_TIMESTAMP('20151206 00:00:00', 'yyyymmdd hh:mm:ss') FROM dual 
              * 
ERROR at line 1: 
ORA-01810: format code appears twice 

2. Falsche Zeitteil

00:00:00 ist falsch, wie es werfen würde ORA-01849 da die Stunden nicht Null sein kann, muss sie zwischen 1 und 12 sein.

 
SQL> SELECT TO_TIMESTAMP('20151206 00:00:00', 'yyyymmdd hh:mi:ss') FROM dual; 
SELECT TO_TIMESTAMP('20151206 00:00:00', 'yyyymmdd hh:mi:ss') FROM dual 
        * 
ERROR at line 1: 
ORA-01849: hour must be between 1 and 12 

Der richtige Weg ist entweder 24 Stunden Format verwenden, oder lassen Sie den Zeitteil, die 12 AM Standard würde.

Zum Beispiel

24-Stunden-Format:

SQL> SELECT TO_TIMESTAMP('20151206 00:00:00', 'yyyymmdd hh24:mi:ss') my_tmstamp FROM dual; 

MY_TMSTAMP 
--------------------------------------------------------------------------- 
06-DEC-15 12.00.00.000000000 AM 

Keine Zeit Teil:

SQL> SELECT TO_TIMESTAMP('20151206', 'yyyymmdd') my_tmstamp FROM dual; 

MY_TMSTAMP 
----------------------------------------------------------------------- 
06-DEC-15 12.00.00.000000000 AM 
+0

Vielen Dank für Ihre Antwort Ich schätze es wirklich - die Sql funktioniert jetzt! – LedMan1001

+1

@ LedMan1001 Bitte markieren Sie es als beantwortet, würde auch anderen helfen! –

+1

Fertig - Danke nochmal :) – LedMan1001

8

Sie das zweimal mm Format-Code verwendet haben in TO_TIMESTAMP('20151206 00:00:00', 'yyyymmdd hh:mm:ss')

MM ist für Monat
MI für Minute
Sie wollten wahrscheinlich YYYYMMDD HH:MI:SS verwenden.

Weitere Informationen finden Sie in der Liste der date format models.

+0

'TO_TIMESTAMP ('20151206 00.00.00',‚yyyymmdd hh: mi: ss) 'ist immer noch falsch. Es wird ** ORA-01849 werfen: die Stunde muss zwischen 1 und 12 liegen **. –

+0

Vielen Dank für Ihre Antwort Ich schätze es wirklich - die Sql funktioniert jetzt! – LedMan1001

+0

@ LedMan1001 - Wenn diese Antwort zur Lösung Ihres Problems beigetragen hat, beachten Sie bitte die Markierung [als akzeptiert] (https://stackoverflow.com/help/someone-answers) mit dem Häkchen unter den Abstimmpfeilen. Vielen Dank! –