Partager via


Fonctions d'heure, de date et d'intervalle

Le tableau suivant répertorie les fonctions d’heure et de date incluses dans le jeu de fonctions scalaires ODBC. Une application peut déterminer l’heure et les fonctions de date prises en charge par un pilote en appelant SQLGetInfo avec un type d’informations de 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 d’une échappement ODBC-time-escape, ODBC-date-escape ou ODBC-timestamp-escape, où le type de données sous-jacent peut être représenté en tant que 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 d’une échappement ODBC-date-escape ou ODBC-timestamp-escape, où le type de données sous-jacent peut être représenté en tant que 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 une échappement ODBC-timetamp-escape ou ODBC-timestamp-escape, où le type de données sous-jacent peut être représenté en tant que SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME ou SQL_TYPE_TIMESTAMP.

Les fonctions scalaires CURRENT_DATE, CURRENT_TIME et CURRENT_TIMESTAMP date de temps 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[( time-precision )] (ODBC 3.0) Retourne l'heure locale actuelle. L’argument de précision temporelle détermine la précision des secondes de la valeur retournée.
CURRENT_TIMESTAMP
[( timestamp-precision )] (ODBC 3.0)
Retourne la date locale actuelle et l’heure locale sous forme de valeur d’horodatage. L’argument timestamp-precision détermine la précision des secondes de l’horodatage retourné.
CURDATE( ) (ODBC 1.0) Retourne la date actuelle.
CURTIME( ) (ODBC 1.0) Retourne l'heure locale actuelle.
DAYNAME( date_exp ) (ODBC 2.0) Retourne une chaîne de caractères contenant le nom spécifique à la source de données du jour (par exemple, dimanche à samedi ou soleil. 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 de date_exp sous forme de valeur entière dans la plage de 1 à 31.
DAYOFWEEK( date_exp ) (ODBC 1.0) Retourne le jour de la semaine en fonction du champ de semaine de date_exp sous forme d’entier 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 d’année de date_exp sous forme de valeur entière dans la plage de 1 à 366.
EXTRACT( extract-field FROM extract-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 SECONDE

La précision de la valeur retournée est définie par l’implémentation. L’échelle est 0, sauf si SECOND est spécifié, auquel cas l’échelle n’est pas inférieure à la précision fractionnaire de seconde du champ source d’extraction.
HOUR( time_exp ) (ODBC 1.0) Retourne l’heure en fonction du champ d’heure dans time_exp en tant que valeur entière dans la plage de 0 à 23.
MINUTE( time_exp ) (ODBC 1.0) Retourne la minute en fonction du champ minute dans time_exp sous la forme d’une valeur entière dans la plage de 0 à 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 dans la plage de 1 à 12.
MONTHNAME( date_exp ) (ODBC 2.0) Retourne une chaîne de caractères contenant le nom spécifique à la source de données du mois (par exemple, janvier à décembre ou jan. pour une source de données qui utilise l’anglais, ou Januar via Dezember pour une source de données qui utilise l’allemand) pour la partie 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 en date_exp sous la forme d’une valeur entière dans la plage de 1 à 4, où le 1 représente le 1er janvier au 31 mars.
SECOND( time_exp ) (ODBC 1.0) Retourne la deuxième en fonction du deuxième champ de time_exp sous la forme d’une valeur entière dans la plage de 0 à 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 valides de l’intervalle 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 seconde 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 de temps et un intervalle spécifie les jours, les semaines, les mois, les trimestres ou les 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 un intervalle spécifie des secondes fractionnaires, des secondes, des minutes ou des heures, la partie de temps de timestamp_exp est définie sur 0 avant de calculer l’horodatage résultant.

Une application détermine quels intervalles une source de données prend en charge 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 lesquels timestamp_exp2 est supérieur à timestamp_exp1. Les valeurs valides de l’intervalle 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 seconde 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 qu’il a occupés :

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

Si l’expression timestamp est une valeur de temps et un intervalle spécifie les jours, les semaines, les mois, les trimestres ou les 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’expression timestamp est une valeur de date et un intervalle spécifie des fractions de secondes, secondes, minutes ou heures, la partie de temps de cet horodatage est définie sur 0 avant de calculer la différence entre les horodatages.

Une application détermine quels intervalles une source de données prend en charge 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 forme de valeur entière dans la plage de 1 à 53.
YEAR( date_exp ) (ODBC 1.0) Retourne l’année en fonction du champ année dans date_exp sous forme de valeur entière. La plage dépend de la source de données.