Imprimer      Ouvrir la version PDF de l'aide en ligne


Rubrique précédente

Rubrique suivante

Fonctions calendaires de date et d'heure

Les fonctions date/heure du calendrier manipulent les données aux formats de date, d'heure et d'horodatage. (Le type de données Horodatage est une combinaison de date et d'heure.)

Toutes les fonctions de date sont certifiées ISO 8601. Cela concerne particulièrement les fonctions telles que Week_Of_Year et Week_Of_Quarter dans lesquelles la première semaine de l'année est représentée par la première semaine complète comprenant un Jeudi. Pour des informations détaillées sur le mode de calcul des fonctions de date, consultez la norme ISO 8601.

Current_Date

Renvoie la date du jour. La date est déterminée par l'ordinateur. La valeur ne contient pas de composant horaire.

Syntaxe :

CURRENT_DATE

Current_Time

Renvoie l'heure actuelle. L'heure est déterminée par l'ordinateur. La valeur ne comporte pas de composant de date.

Remarque : cette fonction affiche l'heure d'exécution du rapport. L'utilisation de cette fonction sur un domaine d'analyse évite de placer le rapport en mémoire cache, ce qui réduit la performance.

Syntaxe :

CURRENT_TIME (n)

où :

n

N'importe quel nombre entier positif qui correspond au nombre de chiffres de précision pour la seconde fractionnaire. Cet argument est facultatif ; la fonction renvoie la précision par défaut en l'absence d'argument.

Current_TimeStamp

Renvoie la date/l'horodatage actuels. L'horodatage est déterminé par l'ordinateur.

Remarque : cette fonction affiche l'heure d'exécution du rapport. L'utilisation de cette fonction sur un domaine d'analyse évite de placer le rapport en mémoire cache, ce qui réduit la performance.

Syntaxe :

CURRENT_TIMESTAMP (n)

où :

n

N'importe quel nombre entier positif qui correspond au nombre de chiffres de précision pour la seconde fractionnaire. Cet argument est facultatif ; la fonction renvoie la précision par défaut en l'absence d'argument.

Day_Of_Quarter

Renvoie un nombre (compris entre 1 et 92) qui correspond au jour du trimestre pour la date spécifiée.

Syntaxe :

DAY_OF_QUARTER (expression_date)

où :

date_expression

N'importe quelle expression qui correspond à une date.

DayName

Renvoie le nom du jour de la semaine (en anglais) pour la date spécifiée.

Syntaxe :

DAYNAME (date_expression)

où :

date_expression

N'importe quelle expression qui correspond à une date.

DayOfMonth

Renvoie le nombre qui correspond au jour du mois pour la date spécifiée.

Syntaxe :

DAYOFMONTH (date_expression)

où :

date_expression

N'importe quelle expression qui correspond à une date.

DayOfWeek

Renvoie un nombre (compris entre 1 et 7) qui correspond au jour de la semaine pour la date spécifiée. Le nombre 1 correspond à dimanche et le nombre 7, à samedi.

Syntaxe :

DAYOFWEEK (date_expression)

où :

date_expression

N'importe quelle expression qui correspond à une date.

DayOfYear

Renvoie un nombre (compris entre 1 et 366) qui correspond au jour de l'année pour la date spécifiée.

Syntaxe :

DAYOFYEAR (date_expression)

où :

date_expression

N'importe quelle expression qui correspond à une date.

Hour

Renvoie un nombre (compris entre 0 et 23) qui correspond à l'heure pour une heure spécifiée. Par exemple, 0 correspond à minuit et 23, à 23 heures.

Syntaxe :

HOUR (time_expression)

où :

time_expression

N'importe quelle expression qui correspond à une heure.

Minute

Renvoie un nombre (compris entre 0 et 59) qui correspond à la minute pour une heure spécifiée.

Syntaxe :

MINUTE (time_expression)

où :

time_expression

N'importe quelle expression qui correspond à une heure.

Month

Renvoie un nombre (compris entre 1 et 12) qui correspond au mois pour une date spécifiée.

Syntaxe :

MONTH (date_expression)

où :

date_expression

N'importe quelle expression qui correspond à une date.

Month_Of_Quarter

Renvoie le nombre (compris entre 1 et 3) qui correspond au mois du trimestre pour la date spécifiée.

Syntaxe :

MONTH_OF_QUARTER (expression_date)

où :

date_expression

N'importe quelle expression qui correspond à une date.

MonthName

Renvoie le nom du mois (en anglais) pour la date spécifiée.

Syntaxe :

MONTHNAME (date_expression)

où :

date_expression

N'importe quelle expression qui correspond à une date.

Now

Renvoie l'horodatage actuel. La fonction NOW équivaut à la fonction CURRENT_TIMESTAMP.

Remarque : cette fonction affiche l'heure d'exécution du rapport. L'utilisation de cette fonction sur un domaine d'analyse évite de placer le rapport en mémoire cache, ce qui réduit la performance.

Syntaxe :

NOW ()

Quarter_Of_Year

Renvoie le nombre (compris entre 1 et 4) qui correspond au trimestre de l'année pour la date spécifiée.

Syntaxe :

QUARTER_OF_YEAR (expression_date)

où :

date_expression

N'importe quelle expression qui correspond à une date.

Second

Renvoie le nombre (compris entre 0 et 59) qui correspond aux secondes pour une heure spécifiée.

Syntaxe :

SECOND (time_expression)

où :

time_expression

N'importe quelle expression qui correspond à une heure.

TimestampAdd

La fonction TimestampAdd ajoute un nombre d'intervalles spécifiés à un horodatage donné. Elle renvoie un seul horodatage.

Syntaxe :

TimestampAdd (intervalle, entier_expression, horodatage_expression)

où :

intervalle

L'intervalle spécifié. Les valeurs valides sont :

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

integer_expression

N'importe quelle expression qui correspond à un nombre entier. Il s'agit du nombre d'intervalles à ajouter.

timestamp_expression

Horodatage utilisé comme base de calcul.

Si cette fonction transmet une expression entier nul ou horodatage nul, elle renverra une valeur nulle.

Dans le scénario le plus simple, cette fonction ajoute simplement le nombre entier spécifié (entier_expression) au composant approprié de l'horodatage, selon l'intervalle donné. Ajouter une semaine équivaut à ajouter sept jours tandis qu'ajouter un trimestre équivaut à ajouter trois mois. Un nombre entier négatif donne lieu à une soustraction (pour remonter dans le temps).

Si vous indiquez une quantité trop importante du composant (plus de 60 secondes, 24 heures, douze mois, etc.), le système ajoute la quantité appropriée au composant suivant. Par exemple, si vous ajoutez des jours à un horodatage, cette fonction tient compte du nombre de jours excédentaires dans un mois donné (y compris les années bissextiles, où février compte 29 jours).

Si vous ajoutez des mois à un horodatage, cette fonction vérifie que l'horodatage qui en résulte compte un nombre suffisant de jour pour le composant jour. Par exemple, l'ajout d'un mois à la date du 31/05/2000 ne donne pas 31/06/2000, parce que le mois de juin ne compte pas 31 jours. Cette fonction réduit le composant Jour au dernier jour du mois, à savoir 30/06/2000.

Le même problème se pose lorsque vous ajoutez l'année à un horodatage qui compte le mois de février et 29 jours (c'est-à-dire, le dernier jour de février dans une année bissextile). Si l'horodatage qui en résulte ne tombe pas une année bissextile, la fonction réduit le composant Jour à 28.

Ci-dessous figurent quelques exemples de la fonction TimestampAdd :

L'exemple de code suivant demande l'horodatage correspondant lorsque l'on ajoute 3 jours à 27/02/2000 14:30:00. Etant donné que le mois de février 2000 est une année bissextile, la fonction renvoie l'horodatage suivant : 01/03/2000 14:30:00.

TimestampAdd(SQL_TSI_DAY, 3, TIMESTAMP'2000-02-27 14:30:00')

L'exemple de code suivant demande l'horodatage correspondant lorsque l'on ajoute 7 mois à 31/07/1999 0:0:0. La fonction renvoie l'horodatage suivant : 29/02/2000 00:00:00. Le composant Jour a été réduit à 29 puisque le mois de février est plus court.

TimestampAdd(SQL_TSI_MONTH, 7, TIMESTAMP'1999-07-31 00:00:00')

L'exemple de code suivant demande l'horodatage correspondant lorsque l'on ajoute 25 minutes à 31/07/2000 23:35:00. La fonction renvoie l'horodatage suivant : 01/08/2000 00:00:00. L'excédent a été propagé sur le composant Mois.

TimestampAdd(SQL_TSI_MINUTE, 25, TIMESTAMP'2000-07-31 23:35:00')

TimeStampDiff

La fonction TimestampDiff renvoie le nombre total d'intervalles spécifiés entre deux horodatages.

Syntaxe :

TimestampDiff (intervalle, horodatage_expression1, horodatage_expression2)

où :

intervalle

L'intervalle spécifié. Les valeurs valides sont :

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

timestamp_expression1

Horodatage à soustraire du second horodatage.

timestamp_expression2

Second horodatage timestamp_expression1 est soustrait de cet horodatage pour déterminer la différence.

Si cette fonction transmet une expression horodatage nul, elle renverra une valeur nulle.

Cette fonction détermine d'abord le composant horodatage qui correspond à l'intervalle spécifié. Par exemple, SQL_TSI_DAY correspond au composant Jour et SQL_TSI_MONTH, au composant Mois.

La fonction examine ensuite les composants de niveau supérieur des deux horodatages afin de calculer le nombre total d'intervalles pour chaque horodatage. Par exemple, si l'intervalle spécifié correspond au composant mois, la fonction calcule le nombre total de mois pour chaque horodatage en ajouter le composant mois et douze fois le composant année.

Enfin, la fonction soustrait le nombre total d'intervalles du premier horodatage du nombre total d'intervalles du second horodatage.

Pour calculer la différence en jours, la fonction tronque les valeurs d'heure des deux expressions d'horodatage puis soustrait les valeurs de date.

Pour calculer la différence en semaines, la fonction calcule la différence en jours, divise par sept puis arrondit.

Pour calculer la différence en trimestres, la fonction calcule la différence en mois, divise par trois puis arrondit.

Pour calculer la différence en années, la fonction calcule la différence en mois, divise par douze puis arrondit.

Exemples de fonction TimestampDiff et de résultats

L'exemple de code suivant demande la différence en jours entre les horodatages 31/07/1998 23:35:00 et 01/04/2000 14:24:00. La fonction renvoie la valeur 610. Notez qu'elle ajoute un jour puisque 2000 est une année bissextile.

TimestampDIFF(SQL_TSI_DAY, TIMESTAMP'1998-07-31 23:35:00', TIMESTAMP'2000-04-01 14:24:00')

Week_Of_Quarter

Renvoie un nombre (compris entre 1 et 13) qui correspond à la semaine du trimestre pour la date spécifiée.

Syntaxe :

WEEK_OF_QUARTER (expression_date)

où :

date_expression

N'importe quelle expression qui correspond à une date.

Week_Of_Year

Renvoie un nombre (compris entre 1 et 53) qui correspond à la semaine de l'année pour la date spécifiée.

Syntaxe :

WEEK_OF_YEAR (expression_date)

où :

date_expression

N'importe quelle expression qui correspond à une date.

Année

Renvoie l'année pour la date spécifiée.

Syntaxe :

YEAR (date_expression)

où :

date_expression

N'importe quelle expression qui correspond à une date.

Exemple :

YEAR (CURRENT_DATE)


Publié en août 2018 Copyright © 2005, 2018, Oracle. Tous droits réservés. Legal Notices.