-
1 pièce(s) jointe(s)
code SQL SYSDATE()
Bonjour,
Voici le champ concerné :
Pièce jointe 518111
Pour le moment je filtre ce champ sur toutes les dates de 2019 via le code :
Code:
SQL WHERE TO_CHAR(C_CMD_LG.DATE_LIV, 'YYYY') = 2019
Je vous sollicite car j'aimerai affiner cette ligne. Je voudrai extraire toutes les dates comprise entre le 1er jour de l'année en cours jusqu'à la date du jour.
Par exemple aujourd’hui je voudrai les résultats du 01/01/2019 au 18/11/2019.
PS : je souhaite que la requête s'actualise toute seule et non pas manuellement (fonction SYSDATE() ???)
Avez-vous une idée ?
Cordialement,
Marin SIMONS
-
bonjour,
Pour extraire l'année d'une date il faut utiliser EXTRACT ou DATEPART selon le SGBD et non pas convertir la date en char, d'ailleurs une zone char devrait être délimitée par des quotes.
Pour extraire du 1er janvier à la date du jour, il faut utiliser l'opérateur BETWEEN et des fonctions de date qui dépendent du DGBD, quel est le votre ?
-
Bonjour,
Je suis sous Oracle. Dans mon souvenir, mon code ne fonctionne pas si j'omet de mettre TO CHAR().
Connaissez-vous la fonction qui renvoi la date du jour / l'année en cours ? Car mon souhait final est :
1er janvier de l'année en cours <= date liv <= date du jour
Cordialement,
Marin SIMONS
-
Bonjour,
J'ai trouvé ça :
Code:
WHERE C_CMD_LG.DATE_LIV BETWEEN TO_DATE('2019/01/01', 'YYYY/MM/DD') AND TO_DATE('2019/12/31', 'YYYY/MM/DD')
J'aimerai juste que la date en gras soit celle du jour ! :)
Marin SIMONS
-
Il suffit de remplacer TO_DATE('2019/12/31', 'YYYY/MM/DD') par TRUNC(SYSDATE'))
-
Vous pouvez écrire :
Code:
WHERE DATE_LIV BETWEEN trunc(sysdate, 'yyyy') AND trunc(sysdate);
-
Attention avec le trunc(sysdate) et avec trunc d'une date en général.
Aujourd'hui par exemple, trunc(sysdate), c'est 22/11/2019 00:00:00.
Si on a des données d'aujourd'hui comme 22/11/2019 10:11:12, elles ne vont pas ressortir car elles sont postérieures au trunc(sysdate).
Si les données en table ont toujours leurs heures, minutes et secondes à 0, il n'y aura pas de souci.
Sinon il faut bricoler un peu la condition pour s'assurer qu'on prend bien la date du jour jusqu'à 23:59:59, avec quelque chose comme :
Code:
WHERE DATE_LIV >= trunc(sysdate, 'yyyy') AND DATE_LIV < trunc(sysdate + 1);