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