Partager via


Fonctions d'heure, de date et d'intervalle

Le tableau suivant répertorie les fonctions d’heure et de date qui sont incluses dans l’ensemble de fonctions scalaires ODBC. Une application peut déterminer quelles fonctions d’heure et de date sont prises en charge par un pilote en appelant SQLGetInfo avec un type d’informations SQL_TIMEDATE_FUNCTIONS.

Les arguments indiqués comme timestamp_exp peuvent être le nom d’une colonne, le résultat d’une autre fonction scalaire, ou un odbc-time-escape, ODBC-date-escape ou ODBC-timestamp-escape, où le type de données sous-jacent peut être représenté comme SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, SQL_TYPE_DATE ou SQL_TYPE_TIMESTAMP.

Les arguments indiqués comme date_exp peuvent être le nom d’une colonne, le résultat d’une autre fonction scalaire, ou un échappement ODBC-date- ou ODBC-timestamp-escape, où le type de données sous-jacent peut être représenté comme SQL_CHAR, SQL_VARCHAR, SQL_TYPE_DATE ou SQL_TYPE_TIMESTAMP.

Les arguments indiqués comme time_exp peuvent être le nom d’une colonne, le résultat d’une autre fonction scalaire, ou un odbc-time-escape ou ODBC-timestamp-escape, où le type de données sous-jacent peut être représenté comme SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME ou SQL_TYPE_TIMESTAMP.

Les fonctions scalaires CURRENT_DATE, CURRENT_TIME et CURRENT_TIMESTAMP timedate ont été ajoutées dans ODBC 3.0 pour s’aligner sur SQL-92.

Fonction Description
CURRENT_DATE( ) (ODBC 3.0) Retourne la date du jour.
CURRENT_TIME[(heure-précision)] (ODBC 3.0) Retourne l'heure locale actuelle. L’argument de précision du temps détermine la précision en secondes de la valeur retournée.
CURRENT_TIMESTAMP
[(timestamp-precision)] (ODBC 3.0)
Retourne la date et l’heure locales actuelles en tant que valeur d’horodatage. L’argument timestamp-precision détermine la précision en secondes de l’horodatage retourné.
CURDATE( ) (ODBC 1.0) Retourne la date du jour.
CURTIME( ) (ODBC 1.0) Retourne l'heure locale actuelle.
DAYNAME(date_exp) (ODBC 2.0) Renvoie une chaîne de caractères contenant le nom spécifique à la source de données du jour (par exemple, dimanche à samedi ou dim. à sat. pour une source de données qui utilise l’anglais, ou Sonntag via Samstag pour une source de données qui utilise l’allemand) pour la partie jour de date_exp.
DAYOFMONTH(date_exp) (ODBC 1.0) Retourne le jour du mois en fonction du champ mois dans date_exp sous la forme d’une valeur entière comprise entre 1 et 31.
DAYOFWEEK(date_exp) (ODBC 1.0) Retourne le jour de la semaine en fonction du champ semaine dans date_exp sous la forme d’une valeur entière dans la plage de 1 à 7, où 1 représente dimanche.
DAYOFYEAR(date_exp) (ODBC 1.0) Retourne le jour de l’année en fonction du champ année dans date_exp sous la forme d’une valeur entière comprise entre 1 et 366.
EXTRACT(extract-field FROMextract-source) (ODBC 3.0) Retourne la partie de champ d’extraction de la source d’extraction. L’argument extract-source est une expression datetime ou interval. L’argument de champ d’extraction peut être l’un des mots clés suivants :

ANNÉE MOIS JOUR HEURE MINUTE SECONDE

La précision de la valeur retournée est définie par l’implémentation. L’échelle est égale à 0, sauf si second est spécifié, auquel cas l’échelle n’est pas inférieure à la précision fractionnaire seconde du champ extract-source .
HOUR(time_exp) (ODBC 1.0) Retourne l’heure basée sur le champ d’heure dans time_exp sous forme d’entier dans la plage de 0 à 23.
MINUTE(time_exp) (ODBC 1.0) Retourne la minute basée sur le champ minute dans time_exp sous la forme d’une valeur entière comprise entre 0 et 59.
MONTH(date_exp) (ODBC 1.0) Retourne le mois en fonction du champ mois dans date_exp sous la forme d’une valeur entière comprise entre 1 et 12.
MONTHNAME(date_exp) (ODBC 2.0) Renvoie une chaîne de caractères contenant le nom spécifique à la source de données du mois (par exemple, janvier à décembre ou janvier à décembre pour une source de données qui utilise l’anglais, ou Januar à Dezember pour une source de données qui utilise l’allemand) pour la partie du mois de date_exp.
NOW( ) (ODBC 1.0) Retourne la date et l’heure actuelles sous forme de valeur d’horodatage.
QUARTER(date_exp) (ODBC 1.0) Retourne le trimestre dans date_exp sous la forme d’une valeur entière dans la plage de 1 à 4, où 1 représente le 1er janvier au 31 mars.
SECOND(time_exp) (ODBC 1.0) Retourne la seconde en fonction du deuxième champ dans time_exp sous la forme d’une valeur entière comprise entre 0 et 59.
TIMESTAMPADD(interval, integer_exp, timestamp_exp) (ODBC 2.0) Retourne l’horodatage calculé en ajoutant integer_exp intervalles d’intervalle de type à timestamp_exp. Les valeurs d’intervalle valides sont les mots clés suivants :

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

où les fractions de secondes sont exprimées en milliards de secondes. Par exemple, l’instruction SQL suivante retourne le nom de chaque employé et sa date anniversaire d’un an :

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

Si timestamp_exp est une valeur d’heure et un intervalle spécifie des jours, des semaines, des mois, des trimestres ou des années, la partie date de timestamp_exp est définie sur la date actuelle avant de calculer l’horodatage résultant.

Si timestamp_exp est une valeur de date et que l’intervalle spécifie des fractions de secondes, de secondes, de minutes ou d’heures, la partie heure de timestamp_exp est définie sur 0 avant de calculer l’horodatage résultant.

Une application détermine les intervalles pris en charge par une source de données en appelant SQLGetInfo avec l’option SQL_TIMEDATE_ADD_INTERVALS.
TIMESTAMPDIFF(interval, timestamp_exp1, timestamp_exp2) (ODBC 2.0) Retourne le nombre entier d’intervalles d’intervalle de type par lequel timestamp_exp2 est supérieur à timestamp_exp1. Les valeurs d’intervalle valides sont les mots clés suivants :

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

où les fractions de secondes sont exprimées en milliards de secondes. Par exemple, l’instruction SQL suivante retourne le nom de chaque employé et le nombre d’années où il a été employé :

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

Si l’une des expressions d’horodatage est une valeur d’heure et que l’intervalle spécifie des jours, des semaines, des mois, des trimestres ou des années, la partie date de cet horodatage est définie sur la date actuelle avant de calculer la différence entre les horodatages.

Si l’une des expressions d’horodatage est une valeur de date et que l’intervalle spécifie des fractions de secondes, de secondes, de minutes ou d’heures, la partie heure de cet horodatage est définie sur 0 avant de calculer la différence entre les horodatages.

Une application détermine les intervalles pris en charge par une source de données en appelant SQLGetInfo avec l’option SQL_TIMEDATE_DIFF_INTERVALS.
WEEK(date_exp) (ODBC 1.0) Retourne la semaine de l’année en fonction du champ semaine dans date_exp sous la forme d’une valeur entière comprise entre 1 et 53.
YEAR(date_exp) (ODBC 1.0) Retourne l’année en fonction du champ year dans date_exp sous la forme d’une valeur entière. La plage dépend de la source de données.