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. |