Requete sql contenant une variable date
Fermé
ami2284
Messages postés
7
Date d'inscription
mardi 17 décembre 2019
Statut
Membre
Dernière intervention
27 mars 2020
-
Modifié le 2 janv. 2020 à 16:04
ami2284 Messages postés 7 Date d'inscription mardi 17 décembre 2019 Statut Membre Dernière intervention 27 mars 2020 - 3 janv. 2020 à 15:55
ami2284 Messages postés 7 Date d'inscription mardi 17 décembre 2019 Statut Membre Dernière intervention 27 mars 2020 - 3 janv. 2020 à 15:55
A voir également:
- Requête sql date supérieure à
- Publipostage date inversée ✓ - Forum Word
- Mfg date - Forum PC portable
- Jm date désabonnement ✓ - Forum Consommation & Internet
- Formule excel si date supérieur à une autre date ✓ - Forum Excel
6 réponses
Bonjour,
Que vaut before_one_days ?
Si le format de la date est bon, es-tu certain que dans ta table il y a au moins une ligne avec la colonne datefwi à cette date ?
Que vaut before_one_days ?
Si le format de la date est bon, es-tu certain que dans ta table il y a au moins une ligne avec la colonne datefwi à cette date ?
ami2284
Messages postés
7
Date d'inscription
mardi 17 décembre 2019
Statut
Membre
Dernière intervention
27 mars 2020
2 janv. 2020 à 16:29
2 janv. 2020 à 16:29
before_one_days veut dire la date systéme-1 ça veut dire la date d'hier.
je pense que le problème vint de l’écriture de la variable dans la requête
je pense que le problème vint de l’écriture de la variable dans la requête
ami2284
Messages postés
7
Date d'inscription
mardi 17 décembre 2019
Statut
Membre
Dernière intervention
27 mars 2020
Modifié le 2 janv. 2020 à 17:06
Modifié le 2 janv. 2020 à 17:06
quand je met SELECT * FROM datafwi where datefwi='2020-01-01'c'est bon
mais quand je mets la variable:
Voici ce que ça donne comme erreur
Error while fetching data from PostgreSQL ERREUR: syntaxe en entrée invalide pour le type date : « +before_one_days + »
LINE 1: SELECT * FROM datafwi where datefwi='+before_one_days +'
mais quand je mets la variable:
Voici ce que ça donne comme erreur
Error while fetching data from PostgreSQL ERREUR: syntaxe en entrée invalide pour le type date : « +before_one_days + »
LINE 1: SELECT * FROM datafwi where datefwi='+before_one_days +'
ami2284
Messages postés
7
Date d'inscription
mardi 17 décembre 2019
Statut
Membre
Dernière intervention
27 mars 2020
2 janv. 2020 à 17:57
2 janv. 2020 à 17:57
j'écris comment la requête
cursor.execute("SELECT * FROM datafwi where datefwi='+before_one_days +'")???
cursor.execute("SELECT * FROM datafwi where datefwi='+before_one_days +'")???
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ami2284
Messages postés
7
Date d'inscription
mardi 17 décembre 2019
Statut
Membre
Dernière intervention
27 mars 2020
3 janv. 2020 à 12:20
3 janv. 2020 à 12:20
ok je suis desolée voici ce que ça donne leprint("SELECT * FROM datafwi where datefwi='+before_one_days +'")
Error while fetching data from PostgreSQL ERREUR: la colonne « before_one_days » n'existe pas
LINE 1: SELECT * FROM datafwi where datefwi=before_one_days
Error while fetching data from PostgreSQL ERREUR: la colonne « before_one_days » n'existe pas
LINE 1: SELECT * FROM datafwi where datefwi=before_one_days
Bonjour,
J'ai essayé au maximum de te faire comprendre ce qu'il se passe, mais manifestement tu as du mal ^^
Pourtant tu vois bien que ton sql n'est pas bon.
Cela signifie que postgresql cherche à tester une égalité entre ta colonne datefwi et une colonne before_one_days qui n'existe pas dans ta table.
On peut donc conclure que ta concaténation n'est pas bonne.
Alors on corrige.
Et pour éviter ce genre de désagrément, on préfère utiliser format.
Mais comme je t'ai signalé, execute peut prendre des valeurs à passer à la requête, il est plus que préférable d'utiliser cela.
http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries
Qui donnerait donc pour toi.
Cette syntaxe est à privilégier absolument.
J'ai essayé au maximum de te faire comprendre ce qu'il se passe, mais manifestement tu as du mal ^^
Pourtant tu vois bien que ton sql n'est pas bon.
LINE 1: SELECT * FROM datafwi where datefwi=before_one_days
Cela signifie que postgresql cherche à tester une égalité entre ta colonne datefwi et une colonne before_one_days qui n'existe pas dans ta table.
On peut donc conclure que ta concaténation n'est pas bonne.
Alors on corrige.
cursor.execute("SELECT * FROM datafwi where datefwi='" +before_one_days + "'")
Et pour éviter ce genre de désagrément, on préfère utiliser format.
cursor.execute("SELECT * FROM datafwi where datefwi='{}'".format(before_one_days))
Mais comme je t'ai signalé, execute peut prendre des valeurs à passer à la requête, il est plus que préférable d'utiliser cela.
http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries
Qui donnerait donc pour toi.
cursor.execute("SELECT * FROM datafwi where datefwi=%", (before_one_days,))
Cette syntaxe est à privilégier absolument.
ami2284
Messages postés
7
Date d'inscription
mardi 17 décembre 2019
Statut
Membre
Dernière intervention
27 mars 2020
3 janv. 2020 à 15:55
3 janv. 2020 à 15:55
Merci beaucoup ça a marché , desolée encore une fois.