transponer registros multiple filas ejemplo convertir columns columnas 10g oracle

registros - Cómo convertir una fecha a segundos en Oracle



pivot oracle columns to rows (7)

Sobre el tema general de truncar fechas de Oracle, aquí está el enlace de documentación para los modelos de formato que se pueden usar en las funciones date trunc () AND round ()

http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions242.htm#sthref2718

"Segundos" no aparece porque la granularidad del tipo de datos DATE es segundos.

Esta página menciona cómo trunc una marca de tiempo a minutos / horas / etc. en Oracle

¿Cómo controlarías una marca de tiempo a segundos de la misma manera?


Utilicé una función como esta:

FUNCTION trunc_sec(p_ts IN timestamp) IS p_res timestamp; BEGIN RETURN TO_TIMESTAMP(TO_CHAR(p_ts, ''YYYYMMDDHH24MI''), ''YYYYMMDDHH24MI''); END trunc_sec;


Lo siento, pero todos mis predecesores parecen estar equivocados:

select cast (systimestamp as date) de dual no se trunca sino que se redondea al siguiente segundo.

Yo uso una función:

CREATE OR REPLACE FUNCTION TRUNC_TS(TS IN TIMESTAMP) RETURN DATE AS BEGIN RETURN TS; END; SELECT systimestamp, trunc_ts(systimestamp) date_trunc, CAST(systimestamp AS DATE) date_cast FROM dual SYSTIMESTAMP DATE_TRUNC DATE_CAST 21.01.10 15:03:34,567350 +01:00 21.01.2010 15:03:34 21.01.2010 15:03:35


Como la precisión de DATE es la segunda (y no hay fracciones de segundos), no hay necesidad de TRUNC en absoluto.

El tipo de datos TIMESTAMP permite fracciones de segundos. Si lo convierte a DATE , se eliminarán los segundos fraccionarios, por ej.

select cast(systimestamp as date) from dual;


Algo del orden de:

select to_char(current_timestamp, ''SS'') from dual;


Para truncar una timestamp de timestamp en segundos, puede convertirla a una fecha:

CAST(timestamp AS DATE)

Para realizar los TRUNC en el artículo:

TRUNC(CAST(timestamp AS DATE), ''YEAR'')