Les fonctions de date et d'heure permettent diverses manipulations sur des informations temporelles.

La récupération de la date en cours est possible par l'intermédiaire de la fonction GETDATE sous SQL Server et Sybase alors que Oracle utilise la fonction SYSDATE.

SELECT GETDATE() AS Date, nom_champ, ...
FROM nom_table

SELECT SYSDATE AS Date, nom_champ, ...
FROM nom_table

Les heures et les dates sont décomposables en plusieurs valeurs telles que les secondes, les minutes, les heures, le jour, le mois et l'année entre autres à partir d'une valeur datetime ou TIMESTAMP.

SELECT DATEPART (yyyy, GETDATE()) FROM nom_table

SELECT { fn YEAR ( { fn CURDATE() } ) } FROM nom_table

Dans cet exemple, les deux syntaxes respectivement sous SQL Server et Oracle, retournent l'année de la date courante.

Il est également possible d'effectuer des calculs sur des dates et des heures comme des additions ou des soustractions.

SELECT DATEADD(mm, 3, GETDATE()) FROM nom_table

SELECT SYSDATE + INTERVAL '3' MONTH FROM nom_table

Ces exemples permettent d'ajouter trois mois à la date courante. Pour ajouter un jour, il suffit sous SQL Server de modifier la partie mm par dd et MONTH par DAY pour Oracle.

SELECT DATEADD(dd, 7, GETDATE()) FROM nom_table

SELECT SYSDATE + INTERVAL '7' DAY FROM nom_table

Sous Oracle, il est possible d'additionner ou de soustraire directement un nombre entier représentant des jours, à une date.

SELECT SYSDATE + 7 FROM nom_table

D'autres éléments de date et d'heure peuvent être ajoutés ou extraits par le même biais sous Oracle.

//soustrait une heure de la date courante
SELECT SYSDATE - 1/24 FROM nom_table

//soustrait 10 minutes de la date courante
SELECT SYSDATE - 1/144 FROM nom_table
Les fonctions
Fonctions SQL Server
Description
DATEADD ( partie_date, nombre, date )
ajoute un nombre représentant une partie de date à la date spécifiée.
DATEDIFF ( partie_date , date_départ , date_fin )
soustrait la date de fin de celle de départ en fonction de la partie spécifiée.
DATENAME ( partie_date , date )
retourne une chaîne de caractères déterminée à partir de la date et de la partie indiquées.
DATEPART ( partie_date , date )
retourne la partie indiquée par le premier argument à partir d'une date.
DAY ( date )
retourne un entier représentant le jour à partir de la date spécifiée.
GETDATE()
retourne la date et l'heure courantes.
GETUTCDATE()
retourne la date et l'heure UTC (Universal Time Coordinates) courantes.
MONTH ( date )
retourne le mois sous forme d'un entier à partir d'une date spécifiée.
YEAR ( date )
retourne l'année sous forme d'une entier à partir de la date spécifiée.
Fonctions Oracle
Description
ADD_MONTHS(date, nb_mois)
ajoute un nombre de mois spécifié à une date.
{ fn CURDATE ( [ expression_date ] ) }
retourne la date courante.
CURRENT_DATE
retourne la date courante.
CURRENT_TIME
retourne l'heure courante.
CURRENT_TIMESTAMP
retourne la date et l'heure courantes.
{ fn CURTIME ( [ expression_date ] ) }
retourne l'heure courante.
{ fn DAYNAME ( [ expression_date ] ) }
retourne le nom du jour de la semaine.
{ fn DAYOFMONTH ( [ expression_date ] ) }
retourne le jour du mois sous forme d'entier.
{ fn DAYOFWEEK ( [ expression_date ] ) }
retourne le jour de la semaine sous forme d'un entier.
{ fn DAYOFYEAR ( [ expression_date ] ) }
retourne le jour d'une année sous forme d'un entier.
HOUR ( expression_temps )
retourne l'heure à partir d'une expression horaire.
INTERVAL ( valeur partie_date )
spécifie un intervalle de temps pour effectuer des opérations.
LAST_DAY ( date )
retourne une date qui représente le dernier jour du mois dans lequel la date s'est produite.
{ fn MINUTE ( expression_temps ) }
retourne les minutes à partir d'une expression horaire.
{ fn MONTH ( expression_temps ) }
retourne le mois à partir d'une expression horaire.
{ fn MONTHNAME ( expression_temps ) }
retourne le nom d mois à partir d'une expression horaire.
MONTHS_BETWEEN ( date_1, date_2 )
retourne le nombre de mois entre les deux valeurs de date.
NEXT_DAY ( date, chaîne )
retourne la date du premier jour de la semaine correspondant à la chaîne de caractères spécifiée.
NOW
retourne la date et l'heure courante comme une valeur de TIMESTAMP.
ROUND ( date, format )
retourne la date spécifiée selon le format fourni.
{ fn SECOND ( expression_temps ) }
retourne le nombre de secondes à partir d'une expression horaire.
SYSDATE
retourne la date et l'heure courantes.
TIMESTAMPADD ( intervalle, nombre, date )
retourne le résultat de l'addition d'une date à un nombre entier selon un intervalle spécifié (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).
TIMESTAMPDIFF ( intervalle, nombre, date )
retourne le résultat de la soustraction d'une date et d'un nombre entier selon un intervall spécifié (voir ci-dessus).
TO_DATE ( chaîne )
convertit une chaîne de caractères en une valeur de date et d'heure valide.
TRUNC ( date, format )
retourne le résultat d'une troncature d'une date selon un format spécifié.
{ fn WEEK ( expression_date ) }
retourne la semaine d'une année sous la forme d'un entier.
{ fn YEAR ( expression_date ) }
retourne une année sous la forme d'un entier.
Exemple
SELECT TO_CHAR(ADD_MONTHS(debut_abonnt, 6))
                                 AS 'Fin abonnement', num_abonnt
  FROM tbl_abonne
  WHERE date_abonnt = SYSDATE - (INTERVAL '5' MONTH);

USE base
GO
CREATE TABLE tbl_employees
(
  num_employe NUMERIC(9, 0) PRIMARY KEY,
  date_embauche DATETIME DEFAULT GETDATE(),
  nom VARCHAR(40) NOT NULL,
  prenom VARCHAR(20) NOT NULL,
  adresse VARCHAR(255) NOT NULL,
  code_postal VARCHAR(5) NOT NULL
  ville VARCHAR(30) NOT NULL,
  telephone VARCHAR(10) NULL,
  email VARCHAR(50) NULL
)
GO
Sommaire