1 2 3
| DATE_HEURE_DE_DEBUT >= to_date(sysdate-16,'dd/mm/yy')
DATE_MODIFICATION >= to_date(sysdate-9,'dd/mm/yy') |
Je considère que c'est une mauvaise habitude, chez Oracle, d'enregistrer des dates sous n'importe quel format, ce qui oblige à utiliser partout l'une et/ou l'autre commande TO_DATE TO_CHAR.
En MySQL, on utilise le format de colonne DATE, DATETIME, ou TIMESTAMP et c'est plus simple car n'a besoin de convertir que... quand on en a vraiment besoin ! 
Le standard SQL pour sysdate est CURRENT_DATE, qui devrait fonctionner normalement dans tous les SGBD.
D'où l'intérêt d'écrire ses requêtes autant que possible en SQL standard plutôt que dans le dialecte de son SGBD. 
Si les dates stockées dans les colonnes DATE_HEURE_DE_DEBUT et DATE_MODIFICATION sont en format DATE standard 'yyyy-mm-dd' ou DATETIME standard 'yyyy-mm-dd hh:mm:ss', alors pas besoin de convertir :
1 2
| DATE_HEURE_DE_DEBUT >= DATE_SUB(CURRENT_DATE, INTERVAL 16 DAY)
DATE_MODIFICATION >= DATE_SUB(CURRENT_DATE, INTERVAL 9 DAY) |
ACTIVITEMESUREE_ID in (SELECT ACTIVITEMESUREE_ID FROM RH_ACTIVITE_MESUREE_0741 WHERE DATE_HEURE_DE_DEBUT >= to_date(sysdate-16,'dd/mm/yy'))
Pour cette dernière partie de requête, une jointure serait peut-être préférable mais bon... 
ACTIVITEMESUREE_ID in (SELECT ACTIVITEMESUREE_ID FROM RH_ACTIVITE_MESUREE_0741 WHERE DATE_HEURE_DE_DEBUT >= DATE_SUB(CURRENT_DATE, INTERVAL 16 DAY))
Partager