interval ejemplo current sql oracle timestamp date-formatting

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