sql >> Base de Datos >  >> RDS >> Oracle

2 funciones que devuelven los segundos de un valor de fecha y hora en Oracle

A continuación hay dos funciones que se pueden usar para devolver la porción de segundos de un valor de fecha y hora en Oracle Database.

El EXTRACT() Función

El EXTRACT(datetime) La función se utiliza para extraer varias partes de fecha y hora de un valor de fecha y hora. Esto incluye la parte de los segundos.

He aquí un ejemplo:

SELECT 
    EXTRACT(SECOND FROM TIMESTAMP '2035-01-01 10:15:37')
FROM DUAL;

Resultado:

37

Es el SECOND palabra clave que extrae la parte de segundos del valor de fecha y hora. Esto incluirá cualquier fracción de segundo:

SELECT 
    EXTRACT(
        SECOND FROM TIMESTAMP '2035-01-01 10:15:37.123456789'
        )
FROM DUAL;

Resultado:

37.123456789

Podemos obtener otras partes de la fecha cambiándola a la palabra clave relevante. Por ejemplo, YEAR , MONTH , HOUR , MINUTE , etc.

También podemos usar la función con otros valores de fecha y hora, como DATE .

El TO_CHAR(datetime) Función

También podemos usar el TO_CHAR(datetime) funcionan como un método alternativo para obtener el componente de segundos de un valor de fecha y hora.

Esta función acepta el valor de fecha y hora o intervalo como primer argumento y un modelo de formato como segundo argumento. La función luego convierte el valor a un tipo de datos de VARCHAR2 en el formato especificado.

El modelo de formato especifica el formato para el que devolver el valor de fechahora/intervalo. El modelo de formato consta de uno o más elementos de formato. Esto nos permite diseñar cuidadosamente los resultados para reflejar nuestro formato deseado.

Si solo queremos devolver los segundos, podemos usar uno de los elementos de formato que devuelve ese componente.

Hay algunos elementos de formato diferentes que podemos usar al devolver el componente de segundos de un valor de fecha y hora.

El más obvio es el SS elemento de formato:

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SS')
FROM DUAL;

Resultado:

37

Como podemos ver, el SS El elemento de formato devuelve solo la parte de los segundos, pero no los segundos fraccionarios.

Segundos fraccionarios

Si queremos incluir las fracciones de segundo, podemos usar el FF elemento de formato. También podemos usar X para especificar el carácter de raíz (el símbolo utilizado para separar la parte entera de la parte fraccionaria):

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;

Resultado:

37.123456789

También es posible limitar la precisión agregando un número al FF parte:

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF5')
FROM DUAL;

Resultado:

37.12345

El número puede ser 1 a través de 9 .

Si bien podría proporcionar explícitamente su propio carácter radix, por ejemplo, un punto (. ), la X El elemento de formato puede ser útil para portar a diferentes idiomas/territorios.

Cuando ejecuté los ejemplos anteriores, mi NLS_TERRITORY el parámetro se estableció en AUSTRALIA , lo que resultó en que el carácter radix fuera un punto final.

Esto es lo que sucede cuando cambio mi NLS_TERRITORY parámetro a GERMANY :

ALTER SESSION SET NLS_TERRITORY = 'GERMANY';

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;

Resultado:

37,123456789

Ahora el carácter base es una coma.

Segundos después de la medianoche

Podemos usar SSSSS para devolver los segundos después de la medianoche:

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 00:01:05', 'SSSSS')
FROM DUAL;

Resultado:

00065