Requete sql contenant une variable date
ami2284
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
ami2284 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
ami2284 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je veux exécuter cette requête en python qui me donne des résultats selon la date d'hier, si je fais directement la date ça s’exécute , mais avec la variable non:
before_one_days = date_today - no_of_days
print("Before Four Days:", before_one_days)
try:
connection = psycopg2.connect(database="testbd", user="postgres", host="localhost",
password="admin", port="5432")
cursor = connection.cursor()
cursor.execute("SELECT * FROM datafwi where datefwi='+before_one_days +'")
Merci pour votre aide
je veux exécuter cette requête en python qui me donne des résultats selon la date d'hier, si je fais directement la date ça s’exécute , mais avec la variable non:
before_one_days = date_today - no_of_days
print("Before Four Days:", before_one_days)
try:
connection = psycopg2.connect(database="testbd", user="postgres", host="localhost",
password="admin", port="5432")
cursor = connection.cursor()
cursor.execute("SELECT * FROM datafwi where datefwi='+before_one_days +'")
Merci pour votre aide
A voir également:
- Requête sql date supérieure à
- Whatsapp date incorrecte ✓ - Forum Mobile
- Airpods 3 date de sortie - Guide
- Jm date avis - Forum Consommation & Internet
- Jm date désabonnement - Forum Gmail
- Publipostage date inversée - Forum Word
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 ?
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
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 +'
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
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.