sql - current - timestamp oracle ejemplo
ORA-01810: el código de formato aparece dos veces (2)
Has usado el código de formato mm
dos veces en TO_TIMESTAMP(''20151206 00:00:00'', ''yyyymmdd hh:mm:ss'')
MM
es por mes
MI
es por minuto
Probablemente YYYYMMDD HH:MI:SS
usar YYYYMMDD HH:MI:SS
.
Consulte la lista de modelos de formato de fecha para obtener más información.
¿Por qué el SQL inferior genera un error ORA-01810? Investigué el error y estoy usando diferentes formatos de fecha para cada inserción de fecha
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''
)
TO_TIMESTAMP (''20151206 00:00:00'', ''aaaammdd hh: mm: ss'')
Está mal de dos maneras:
1. Código de formato incorrecto
Ha repetido la máscara de formato MM
dos veces. MM
es mes y MI
es minutos .
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. Porción de tiempo incorrecta
00:00:00
es incorrecto ya que arrojaría ORA-01849 ya que la hora no puede ser cero, debe estar entre 1 y 12 .
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
La forma correcta es usar el formato de 24 horas o dejar la porción de tiempo predeterminada a las 12 AM
.
Por ejemplo,
Formato de 24 horas:
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
Sin porción de tiempo:
SQL> SELECT TO_TIMESTAMP(''20151206'', ''yyyymmdd'') my_tmstamp FROM dual;
MY_TMSTAMP
-----------------------------------------------------------------------
06-DEC-15 12.00.00.000000000 AM