Oracle
 sql >> Database >  >> RDS >> Oracle

2 Funzioni che restituiscono i secondi da un valore DateTime in Oracle

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