2010-06-01 15 views
10

Actualmente estoy usando MyTimeStampField-TRUNC(MyTimeStampField) para extraer la parte de tiempo de una columna de marca de tiempo en Oracle.Extraiga parte de tiempo de la columna TimeStamp en ORACLE

SELECT CURRENT_TIMESTAMP-TRUNC(CURRENT_TIMESTAMP) FROM DUAL 

Esto devuelve

+00 13: 12: 07,100729

Esto funciona bien para mí, para extraer la pieza del tiempo de un campo de marca de tiempo, pero me pregunto si hay una manera mejor (puede estar usando una función incorporada de ORACLE) para hacer esto?

Respuesta

7

¿Qué hay de la función EXTRACT()?

+4

si utilizar la función de extracción, debe escribió algo como 'EXTRACTO SELECT (hora de CURRENT_TIMESTAMP) || ':' || EXTRACTO (MINUTO DESDE CURRENT_TIMESTAMP) || ':' || EXTRACT (SEGUNDO DE CURRENT_TIMESTAMP) FROM DUAL; '¿Es esto más eficiente el método que uso? – RRUZ

+0

@RRUZ quizás también agregue ceros a la izquierda si timepart tiene solo 1 dígito: SELECCIONE LPAD (EXTRAER (HORA DESDE CURRENT_TIMESTAMP), 2, '0') || ':' || LPAD (EXTRACTO (MINUTO DESDE CURRENT_TIMESTAMP), 2, '0') || ':' || LPAD (EXTRACTO (SEGUNDO DE CURRENT_TIMESTAMP), 2, '0') DE DUAL; –

6

Siempre se puede hacer algo como:

select TO_DATE(TO_CHAR(SYSDATE,'hh24:mi:ss'),'hh24:mi:ss') from dual 

creo que esto va a funcionar con marcas de tiempo también.

0

Creo que el método en cuestión es más corto y más rápido que en ambas respuestas. Porque implica solo dos operaciones matemáticas y ningún análisis complejo, formateo y conversión.

2

seleccione TO_DATE (TO_CHAR (SYSDATE, 'hh24: mi: ss'), 'hh24: mi: ss') desde dual. Esto le da a la marca de tiempo por 1 hora menos que la real.

1

Esto puede ayudar:

Select EXTRACT(HOUR FROM (SYSDATE - trunc(sysdate)) DAY TO SECOND) From dual; 
-2
select hour(CURRENT_TIMESTAMP) 
+2

Bienvenido a SO. Tal vez pueda mejorar su respuesta especificando cómo es mejor que la solución de la pregunta, así como también siguiendo la sección de ayuda para formatear correctamente su código. –

2

¿Quieres simplemente salí a continuación, utilizar

to_char(cast(SYSDATE as date),'DD-MM-YYYY') 

y si quieres el tiempo justo a continuación, utiliza

to_char(cast(SYSDATE as date),'hh24:mi:ss') 

los parámetros están haciendo todos los cambiados

'DD-MM-YYYY' 

y

'hh24:mi:ss' 
+0

por lo que la instrucción final sería para la declaración anterior SELECCIONAR to_char (emitir (SYSDATE como fecha), 'DD-MM-YYYY'), to_char (emitir (SYSDATE como fecha), 'hh24: mi: ss') FROM DUAL –

Cuestiones relacionadas