Funzioni di data, ora e intervallo

Nella tabella seguente sono elencate le funzioni di ora e data incluse nel set di funzioni scalari ODBC. Un'applicazione può determinare quali funzioni di data e ora sono supportate da un driver chiamando SQLGetInfo con un tipo di informazioni di SQL_TIMEDATE_FUNCTIONS.

Gli argomenti contrassegnati come timestamp_exp possono essere il nome di una colonna, il risultato di un'altra funzione scalare o un escape ODBC-time-escape, ODBC-date- escape o ODBC-timestamp-escape, dove il tipo di dati sottostante può essere rappresentato come SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, SQL_TYPE_DATE o SQL_TYPE_TIMESTAMP.

Gli argomenti contrassegnati come date_exp possono essere il nome di una colonna, il risultato di un'altra funzione scalare o un escape ODBC-date- o ODBC-timestamp-escape, in cui il tipo di dati sottostante può essere rappresentato come SQL_CHAR, SQL_VARCHAR, SQL_TYPE_DATE o SQL_TYPE_TIMESTAMP.

Gli argomenti contrassegnati come time_exp possono essere il nome di una colonna, il risultato di un'altra funzione scalare o un escape ODBC-timestamp o ODBC-timestamp-escape, in cui il tipo di dati sottostante può essere rappresentato come SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME o SQL_TYPE_TIMESTAMP.

Le funzioni scalari CURRENT_DATE, CURRENT_TIME e CURRENT_TIMESTAMP timedate sono state aggiunte in ODBC 3.0 per allinearsi a SQL-92.

Funzione Descrizione
CURRENT_DATE( ) (ODBC 3.0) Restituisce la data corrente.
CURRENT_TIME[( time-precision )] (ODBC 3.0) Restituisce l'ora locale corrente. L'argomento di precisione temporale determina la precisione dei secondi del valore restituito.
CURRENT_TIMESTAMP
[( timestamp-precision )] (ODBC 3.0)
Restituisce la data locale corrente e l'ora locale come valore di timestamp. L'argomento timestamp-precision determina la precisione dei secondi del timestamp restituito.
CURDATE( ) (ODBC 1.0) Restituisce la data corrente.
CURTIME( ) (ODBC 1.0) Restituisce l'ora locale corrente.
DAYNAME( date_exp ) (ODBC 2.0) Restituisce una stringa di caratteri contenente il nome specifico dell'origine dati del giorno, ad esempio domenica e sabato o sun. fino a Sat. per un'origine dati che utilizza l'inglese o Sonntag tramite Samstag per un'origine dati che utilizza il tedesco, per la parte del giorno di date_exp.
DAYOFMONTH( date_exp ) (ODBC 1.0) Restituisce il giorno del mese in base al campo mese in date_exp come valore intero nell'intervallo compreso tra 1 e 31.
DAYOFWEEK( date_exp ) (ODBC 1.0) Restituisce il giorno della settimana in base al campo settimana in date_exp come valore intero compreso nell'intervallo da 1 a 7, dove 1 rappresenta domenica.
DAYOFYEAR( date_exp ) (ODBC 1.0) Restituisce il giorno dell'anno in base al campo year in date_exp come valore intero nell'intervallo compreso tra 1 e 366.
EXTRACT( extract-field FROM extract-source ) (ODBC 3.0) Restituisce la parte extract-field dell'origine di estrazione. L'argomento extract-source è un'espressione datetime o interval. L'argomento extract-field può essere una delle parole chiave seguenti:

YEAR MONTH DAY HOUR MINUTE SECOND

La precisione del valore restituito è definita dall'implementazione. La scala è 0 a meno che non venga specificato SECOND, nel qual caso la scala non è inferiore alla precisione frazionaria dei secondi del campo di origine dell'estrazione.
HOUR( time_exp ) (ODBC 1.0) Restituisce l'ora in base al campo ora in time_exp come valore intero nell'intervallo compreso tra 0 e 23.
MINUTE( time_exp ) (ODBC 1.0) Restituisce il minuto in base al campo minuto in time_exp come valore intero nell'intervallo compreso tra 0 e 59.
MONTH( date_exp ) (ODBC 1.0) Restituisce il mese in base al campo mese in date_exp come valore intero nell'intervallo compreso tra 1 e 12.
MONTHNAME( date_exp ) (ODBC 2.0) Restituisce una stringa di caratteri contenente il nome specifico dell'origine dati del mese ,ad esempio da gennaio a dicembre o da gennaio a dicembre o da dicembre a dicembre per un'origine dati che utilizza l'inglese o gennaio tramite Dezember per un'origine dati che utilizza il tedesco) per la parte mensile di date_exp.
NOW( ) (ODBC 1.0) Restituisce la data e l'ora correnti come valore di timestamp.
QUARTER( date_exp ) (ODBC 1.0) Restituisce il trimestre in date_exp come valore intero compreso nell'intervallo compreso tra 1 e 4, dove 1 rappresenta l'1 gennaio e il 31 marzo.
SECOND( time_exp ) (ODBC 1.0) Restituisce il secondo in base al secondo campo in time_exp come valore intero nell'intervallo compreso tra 0 e 59.
TIMESTAMPADD( interval, integer_exp, timestamp_exp ) (ODBC 2.0) Restituisce il timestamp calcolato aggiungendo integer_exp intervalli di tipo a timestamp_exp. I valori validi dell'intervallo sono le parole chiave seguenti:

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

dove i secondi frazionari sono espressi in miliardi di secondi. Ad esempio, l'istruzione SQL seguente restituisce il nome di ogni dipendente e la data dell'anniversario di un anno:

SELECT NAME, {fn TIMESTAMPADD(SQL_TSI_YEAR, 1, HIRE_DATE)} FROM EMPLOYEES

Se timestamp_exp è un valore di ora e l'intervallo specifica giorni, settimane, mesi, trimestri o anni, la parte relativa alla data di timestamp_exp viene impostata sulla data corrente prima di calcolare il timestamp risultante.

Se timestamp_exp è un valore di data e l'intervallo specifica secondi, secondi, minuti o ore frazionari, la parte temporale di timestamp_exp viene impostata su 0 prima di calcolare il timestamp risultante.

Un'applicazione determina gli intervalli supportati da un'origine dati chiamando SQLGetInfo con l'opzione SQL_TIMEDATE_ADD_INTERVALS.
TIMESTAMPDIFF( interval, timestamp_exp1, timestamp_exp2 ) (ODBC 2.0) Restituisce il numero intero di intervalli di tipo intervallo in base al quale timestamp_exp2 è maggiore di timestamp_exp1. I valori validi dell'intervallo sono le parole chiave seguenti:

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

dove i secondi frazionari sono espressi in miliardi di secondi. Ad esempio, l'istruzione SQL seguente restituisce il nome di ogni dipendente e il numero di anni in cui è stato impiegato:

SELECT NAME, {fn TIMESTAMPDIFF(SQL_TSI_YEAR, {fn CURDATE()}, HIRE_DATE)} FROM EMPLOYEES

Se un'espressione timestamp è un valore di ora e l'intervallo specifica giorni, settimane, mesi, trimestri o anni, la parte data di tale timestamp viene impostata sulla data corrente prima di calcolare la differenza tra i timestamp.

Se un'espressione timestamp è un valore di data e l'intervallo specifica secondi frazionari, secondi, minuti o ore, la parte temporale del timestamp viene impostata su 0 prima di calcolare la differenza tra i timestamp.

Un'applicazione determina gli intervalli supportati da un'origine dati chiamando SQLGetInfo con l'opzione SQL_TIMEDATE_DIFF_INTERVALS.
WEEK( date_exp ) (ODBC 1.0) Restituisce la settimana dell'anno in base al campo settimana in date_exp come valore intero nell'intervallo compreso tra 1 e 53.
YEAR( date_exp ) (ODBC 1.0) Restituisce l'anno in base al campo year in date_exp come valore intero. L'intervallo dipende dall'origine dati.