Utiliser la fonction SIGN sous Oracle pour comparer des dates

Ce petit post a pour but d’expliquer l’utilisation de la fonction SIGN pour comparer des dates.

A la base, cette fonction permet de savoir si un nombre est négatif, égal à zéro ou positif :
SELECT SIGN(-11) FROM DUAL; La fonction retourne -1
SELECT SIGN(0) FROM DUAL; La fonction retourne 0
SELECT SIGN(11) FROM DUAL; La fonction retourne 1

Nous allons utiliser la fonction SIGN pour comparer 2 dates et savoir si la DATE1 est antérieure, égale ou postérieure à la DATE2.

Syntaxe :

La syntaxe est la suivante :
SELECT SIGN(DATE1-DATE2) FROM DUAL;
Si DATE1 est antérieure à DATE2, alors la fonction retourne -1.
Si DATE1 est postérieure à DATE2, alors la fonction retourne 1.
Si DATE1 est égale à DATE2, alors la fonction retourne 0.

Exemple de requête qui retourne toujours 0 :
SELECT SIGN(SYSDATE-SYSDATE) FROM DUAL;

Exemple :

Nous avons des immeubles avec des dates de construction d’un côté et de l’autre nous avons des états réglementaires (l’amiante concerne les immeubles construit avant le 01/07/1997, le plomb concerne les immeubles construit avant le 01/01/1949) qui doivent être réalisés en fonction de cette date de construction.

Pour obtenir la colonne "A_REALISER", on utilise la syntaxe suivante :
DECODE(SIGN(DATE_APPLICATION-DATE_CONSTRUCTION),-1,'NON',0,'OUI',1,'OUI') AS A_REALISER

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.