Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

2 funções que retornam os segundos de um valor de data e hora no Oracle


Abaixo estão duas funções que podem ser usadas para retornar a parte de segundos de um valor de data e hora no Oracle Database.

O EXTRACT() Função


O EXTRACT(datetime) A função é usada para extrair várias partes de data e hora de um valor de data e hora. Isso inclui a parte dos segundos.

Aqui está um exemplo:
SELECT 
    EXTRACT(SECOND FROM TIMESTAMP '2035-01-01 10:15:37')
FROM DUAL;

Resultado:
37

É o SECOND palavra-chave que extrai a parte dos segundos do valor datetime. Isso incluirá quaisquer segundos fracionários:
SELECT 
    EXTRACT(
        SECOND FROM TIMESTAMP '2035-01-01 10:15:37.123456789'
        )
FROM DUAL;

Resultado:
37.123456789

Podemos obter outras partes da data alterando-a para a palavra-chave relevante. Por exemplo, YEAR , MONTH , HOUR , MINUTE , etc

Também podemos usar a função com outros valores de data e hora, como DATE .

O TO_CHAR(datetime) Função


Também podemos usar o TO_CHAR(datetime) funciona como um método alternativo para obter o componente de segundos de um valor de data e hora.

Esta função aceita o valor datetime ou interval como seu primeiro argumento e um modelo de formato como seu segundo argumento. A função então converte o valor para um tipo de dados de VARCHAR2 no formato especificado.

O modelo de formato especifica o formato para o qual retornar o valor de data/hora/intervalo. O modelo de formato consiste em um ou mais elementos de formato. Isso nos permite elaborar cuidadosamente os resultados para refletir o formato desejado.

Se quisermos retornar apenas os segundos, podemos usar um dos elementos de formato que retornam esse componente.

Existem alguns elementos de formato diferentes que podemos usar ao retornar o componente de segundos de um valor de data e hora.

O mais óbvio é o SS elemento de formato:
SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SS')
FROM DUAL;

Resultado:
37

Como podemos ver, o SS elemento de formato retorna apenas a parte dos segundos, mas não os segundos fracionários.

Frações de Segundos


Se quisermos incluir os segundos fracionários, podemos usar o FF elemento de formato. Também podemos usar X para especificar o caractere radix (o símbolo usado para separar a parte inteira da parte fracionária):
SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;

Resultado:
37.123456789

Também é possível limitar a precisão anexando um número ao FF papel:
SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF5')
FROM DUAL;

Resultado:
37.12345

O número pode ser 1 até 9 .

Embora você possa fornecer explicitamente seu próprio caractere de base – por exemplo, um ponto final (. ), o X O elemento de formato pode ser útil para portar entre diferentes idiomas/territórios.

Quando executei os exemplos acima, meu NLS_TERRITORY parâmetro foi definido como AUSTRALIA , o que resultou no caractere radix sendo um ponto final.

Veja o que acontece quando eu mudo meu NLS_TERRITORY parâmetro para GERMANY :
ALTER SESSION SET NLS_TERRITORY = 'GERMANY';

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

Resultado:
37,123456789

Agora o caractere radix é uma vírgula.

Segundos depois da meia-noite


Podemos usar SSSSS para retornar os segundos após a meia-noite:
SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 00:01:05', 'SSSSS')
FROM DUAL;

Resultado:
00065