Di seguito sono elencate due funzioni che possono essere utilizzate per restituire la parte dei secondi da un valore datetime in Oracle Database.
Il EXTRACT()
Funzione
Il EXTRACT(datetime)
La funzione viene utilizzata per estrarre varie parti datetime da un valore datetime. Ciò include la parte dei secondi.
Ecco un esempio:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2035-01-01 10:15:37')
FROM DUAL;
Risultato:
37
È il SECOND
parola chiave che estrae la parte dei secondi dal valore datetime. Ciò includerà qualsiasi frazione di secondo:
SELECT
EXTRACT(
SECOND FROM TIMESTAMP '2035-01-01 10:15:37.123456789'
)
FROM DUAL;
Risultato:
37.123456789
Possiamo ottenere altre parti della data modificandola con la parola chiave pertinente. Ad esempio, YEAR
, MONTH
, HOUR
, MINUTE
, ecc.
Possiamo anche usare la funzione con altri valori datetime, come DATE
.
Il TO_CHAR(datetime)
Funzione
Possiamo anche usare TO_CHAR(datetime)
funziona come metodo alternativo per ottenere il componente secondi da un valore datetime.
Questa funzione accetta il valore datetime o interval come primo argomento e un modello di formato come secondo argomento. La funzione converte quindi il valore in un tipo di dati di VARCHAR2
nel formato specificato.
Il modello di formato specifica il formato per il quale restituire il valore datetime/intervallo. Il modello di formato è costituito da uno o più elementi di formato. Questo ci consente di elaborare con cura i risultati per riflettere il formato desiderato.
Se vogliamo restituire solo i secondi, possiamo utilizzare uno degli elementi di formato che restituiscono quel componente.
Esistono alcuni elementi di formato diversi che possiamo utilizzare quando si restituisce il componente secondi da un valore datetime.
Il più ovvio è il SS
elemento di formato:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SS')
FROM DUAL;
Risultato:
37
Come possiamo vedere, il SS
l'elemento format restituisce solo la parte dei secondi, ma non i secondi frazionari.
Secondi frazionari
Se vogliamo includere i secondi frazionari, possiamo usare il FF
elemento di formato. Possiamo anche usare X
per specificare il carattere radice (il simbolo utilizzato per separare la parte intera dalla parte frazionaria):
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;
Risultato:
37.123456789
È anche possibile limitare la precisione aggiungendo un numero al FF
parte:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF5')
FROM DUAL;
Risultato:
37.12345
Il numero può essere 1
tramite 9
.
Sebbene tu possa fornire esplicitamente il tuo carattere radix, ad esempio un punto (.
), la X
L'elemento format può essere utile per il porting in diverse lingue/territori.
Quando ho eseguito gli esempi precedenti, il mio NLS_TERRITORY
il parametro è stato impostato su AUSTRALIA
, che ha portato il carattere radix a essere un punto fermo.
Ecco cosa succede quando cambio il mio NLS_TERRITORY
parametro a GERMANY
:
ALTER SESSION SET NLS_TERRITORY = 'GERMANY';
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;
Risultato:
37,123456789
Ora il carattere radix è una virgola.
Seconda mezzanotte
Possiamo usare SSSSS
per restituire i secondi dopo la mezzanotte:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 00:01:05', 'SSSSS')
FROM DUAL;
Risultato:
00065