PL / SQL - Data e ora

In questo capitolo, discuteremo la data e l'ora in PL / SQL. Esistono due classi di tipi di dati relativi a data e ora in PL / SQL:

  • Tipi di dati datetime
  • Tipi di dati di intervallo

I tipi di dati Datetime sono:

  • DATE
  • TIMESTAMP
  • TIMESTAMP CON FUSO ORARIO
  • TIMESTAMP CON FUSO ORARIO LOCALE

I tipi di dati Interval sono:

  • INTERVALLO DA ANNO A MESE
  • INTERVALLO GIORNO AL SECONDO

Valori di campo per i tipi di dati Datetime e Interval

Tutti e due datetime e interval i tipi di dati sono costituiti da fields. I valori di questi campi determinano il valore del tipo di dati. La tabella seguente elenca i campi e i loro possibili valori per datetimes e intervalli.

Nome campo Valori data / ora validi Valori di intervallo validi
ANNO Da -4712 a 9999 (escluso anno 0) Qualsiasi numero intero diverso da zero
MESE Da 01 a 12 Da 0 a 11
GIORNO Da 01 a 31 (limitato dai valori di MONTH e YEAR, secondo le regole del calendario per il locale) Qualsiasi numero intero diverso da zero
ORA Da 00 a 23 Da 0 a 23
MINUTE Da 00 a 59 Da 0 a 59
SECONDO

Da 00 a 59,9 (n), dove 9 (n) è la precisione dei secondi frazionari

La parte 9 (n) non è applicabile per DATE.

Da 0 a 59,9 (n), dove 9 (n) è la precisione dei secondi frazionari dell'intervallo
TIMEZONE_HOUR

Da -12 a 14 (la gamma si adatta alle modifiche dell'ora legale)

Non applicabile per DATE o TIMESTAMP.

Non applicabile
TIMEZONE_MINUTE

Da 00 a 59

Non applicabile per DATE o TIMESTAMP.

Non applicabile
TIMEZONE_REGION Non applicabile per DATE o TIMESTAMP. Non applicabile
TIMEZONE_ABBR Non applicabile per DATE o TIMESTAMP. Non applicabile

I tipi di dati e le funzioni Datetime

Di seguito sono riportati i tipi di dati Datetime:

DATA

Memorizza le informazioni di data e ora sia nei tipi di dati carattere che numerici. È composto da informazioni su secolo, anno, mese, data, ora, minuti e secondi. È specificato come -

TIMESTAMP

È un'estensione del tipo di dati DATE. Memorizza l'anno, il mese e il giorno del tipo di dati DATE, insieme ai valori di ora, minuti e secondi. È utile per memorizzare valori temporali precisi.

TIMESTAMP CON FUSO ORARIO

È una variante di TIMESTAMP che include un nome di regione del fuso orario o una differenza di fuso orario nel suo valore. La differenza di fuso orario è la differenza (in ore e minuti) tra l'ora locale e UTC. Questo tipo di dati è utile per raccogliere e valutare le informazioni sulla data in aree geografiche.

TIMESTAMP CON FUSO ORARIO LOCALE

È un'altra variante di TIMESTAMP che include un offset di fuso orario nel suo valore.

La tabella seguente fornisce le funzioni Datetime (dove x ha il valore datetime) -

S.No Nome e descrizione della funzione
1

ADD_MONTHS(x, y);

Aggiunge y mesi a x.

2

LAST_DAY(x);

Restituisce l'ultimo giorno del mese.

3

MONTHS_BETWEEN(x, y);

Restituisce il numero di mesi tra x e y.

4

NEXT_DAY(x, day);

Restituisce la data e l'ora del giorno successivox.

5

NEW_TIME;

Restituisce il valore di ora / giorno da un fuso orario specificato dall'utente.

6

ROUND(x [, unit]);

Round x.

7

SYSDATE();

Restituisce il datetime corrente.

8

TRUNC(x [, unit]);

Tronca x.

Funzioni di timestamp (dove, x ha un valore di timestamp) -

S.No Nome e descrizione della funzione
1

CURRENT_TIMESTAMP();

Restituisce un TIMESTAMP WITH TIME ZONE contenente l'ora della sessione corrente insieme al fuso orario della sessione.

2

EXTRACT({ YEAR | MONTH | DAY | HOUR | MINUTE | SECOND } | { TIMEZONE_HOUR | TIMEZONE_MINUTE } | { TIMEZONE_REGION | } TIMEZONE_ABBR ) FROM x)

Estrae e restituisce un anno, mese, giorno, ora, minuto, secondo o fuso orario da x.

3

FROM_TZ(x, time_zone);

Converte TIMESTAMP x e il fuso orario specificato da time_zone in TIMESTAMP WITH TIMEZONE.

4

LOCALTIMESTAMP();

Restituisce un TIMESTAMP contenente l'ora locale nel fuso orario della sessione.

5

SYSTIMESTAMP();

Restituisce un TIMESTAMP WITH TIME ZONE contenente l'ora corrente del database insieme al fuso orario del database.

6

SYS_EXTRACT_UTC(x);

Converte il TIMESTAMP WITH TIMEZONE x in un TIMESTAMP contenente la data e l'ora in UTC.

7

TO_TIMESTAMP(x, [format]);

Converte la stringa x in TIMESTAMP.

8

TO_TIMESTAMP_TZ(x, [format]);

Converte la stringa x in un TIMESTAMP WITH TIMEZONE.

Esempi

I seguenti frammenti di codice illustrano l'uso delle funzioni precedenti:

Example 1

SELECT SYSDATE FROM DUAL;

Output -

08/31/2012 5:25:34 PM

Example 2

SELECT TO_CHAR(CURRENT_DATE, 'DD-MM-YYYY HH:MI:SS') FROM DUAL;

Output -

31-08-2012 05:26:14

Example 3

SELECT ADD_MONTHS(SYSDATE, 5) FROM DUAL;

Output -

01/31/2013 5:26:31 PM

Example 4

SELECT LOCALTIMESTAMP FROM DUAL;

Output -

8/31/2012 5:26:55.347000 PM

I tipi di dati e le funzioni dell'intervallo

Di seguito sono riportati i tipi di dati Interval:

  • IINTERVAL YEAR TO MONTH - Memorizza un periodo di tempo utilizzando i campi data / ora ANNO e MESE.

  • INTERVALLO DA GIORNO A SECONDO - Memorizza un periodo di tempo in termini di giorni, ore, minuti e secondi.

Funzioni di intervallo

S.No Nome e descrizione della funzione
1

NUMTODSINTERVAL(x, interval_unit);

Converte il numero x in un INTERVALLO DA GIORNO A SECONDO.

2

NUMTOYMINTERVAL(x, interval_unit);

Converte il numero x in un INTERVALLO DA ANNO A MESE.

3

TO_DSINTERVAL(x);

Converte la stringa x in un INTERVAL DAY TO SECOND.

4

TO_YMINTERVAL(x);

Converte la stringa x in un INTERVALLO DA ANNO A MESE.