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 FROMextract-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 atimestamp_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 sono stati impiegati: 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. |