This page menciona cómo trunc una marca de tiempo a minutos/horas/etc. en OracleCómo guardar una fecha en segundos en Oracle
¿Cómo haría una indicación de la hora en segundos de la misma manera?
This page menciona cómo trunc una marca de tiempo a minutos/horas/etc. en OracleCómo guardar una fecha en segundos en Oracle
¿Cómo haría una indicación de la hora en segundos de la misma manera?
Dado que 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 en DATE
, se eliminarán los segundos fraccionarios, p.
select cast(systimestamp as date)
from dual;
para truncar una timestamp
a segundos echarlo a una fecha:
CAST(timestamp AS DATE)
A continuación, realice los TRUNC
's en el artículo:
TRUNC(CAST(timestamp AS DATE), 'YEAR')
Por tema general de truncar fechas de Oracle, aquí está el enlace de documentación para los modelos de formato que se pueden usar en date trunc() AND round() fu nctions
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions242.htm#sthref2718
"segundos" no aparece debido a que el nivel de detalle del tipo de datos DATE es segundo.
Algo del orden de:
select to_char(current_timestamp, 'SS') from dual;
que utiliza 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 parece estar equivocado:
selecto elenco (systimestamp como date) from dual no se trunca sino que se redondea al siguiente segundo.
que utiliza una función: el trabajo
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
Ejecuté su código, pero no puedo reproduce tus hallazgos. En unas pocas docenas de pruebas (la mayoría de las cuales se verían afectadas por el redondeo), la porción de segundos nunca difirió entre los tres resultados. ¿En qué versión de Oracle estás? (Yo estaba en 11.2). –
Sí, tiene razón. El reparto hace un redondeo – javadeveloper
CAST redondeará antes de la versión 11i y truncará después. Consulte [Conversión de datos implícitos] (http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements002.htm#i163326) en la documentación HTML de Oracle. – Sulihin
trunc a min única, emitidos hasta la fecha to_char(START_TIME,'YYYYMMDDHH24MISS')
o simplemente select to_char(current_timestamp, 'YYYYMMDDHH24MISS') from dual;
https://www.techonthenet.com/oracle/functions/trunc_date.php
Creo que este es el camino a seguir, ya que, a diferencia de la mayoría de estas respuestas, es independiente de la versión de Oracle. Aunque no es del todo correcto, te has perdido los segundos. Debería ser algo como: to_date (to_char (systimestamp, 'AAAA-MM-DD HH24: MI: SS'), 'AAAA-MM-DD HH24: MI: SS') – delany