Requete SQL de comparaison de date: HELP
sfeltan
Messages postés
29
Statut
Membre
-
ludo96x -
ludo96x -
Voila, je travaille sur un projet, une simulation de gare SNCF. Mon problème est le suivant: J'ai une base de donnée ACCESS avec une table Trains qui contient pas mal d'infos sur les trains prévus, dont notament les horraires de départ de chaque train...
Ce que je veux faire c'est afficher sur un programme C++ (fait sous BUILDER 3), par le biais de requêtes SQL, les trains dont l'heure est a supérieure ou égale à l'heure système actuelle.
Voila, si quelqu'un aurait une idée, ça fait quelques heures que je fouine sur le net, je trouve pas grand chose...
Merci d'avance...
Ce que je veux faire c'est afficher sur un programme C++ (fait sous BUILDER 3), par le biais de requêtes SQL, les trains dont l'heure est a supérieure ou égale à l'heure système actuelle.
Voila, si quelqu'un aurait une idée, ça fait quelques heures que je fouine sur le net, je trouve pas grand chose...
Merci d'avance...
A voir également:
- Requete SQL de comparaison de date: HELP
- Comparaison million milliard - Accueil - Technologies
- Airpods 3 date de sortie - Guide
- Nombre de jours entre deux dates excel - Guide
- Samsung a33 date de sortie - Guide
- Iphone 14 date de sortie - Guide
5 réponses
Salut,
ton problème se situe à quel niveau ?
SQL ou C++
Parce qu'en SQL, tu testes la date du jour avec now().
ton problème se situe à quel niveau ?
SQL ou C++
Parce qu'en SQL, tu testes la date du jour avec now().
SELECT toto FROM tab WHERE Madate >= formatdatetime(Now() ,0);
Le hic c'est que Builder plante quand j'arrive à la requete SQL. En fait le code c++ donne ceci:
Query4->Close();
Query4->SQL->Clear();
Query4->SQL->Add("SELECT * UPDATE Train SET Depart = 'Autorisé' WHERE HDepart<=#15:00:00#");
Query4->ExecSQL();
La partie C++ est bonne (sinon il y aurait une erreur de compilation), c'est la requéte qui foire (car j'ai essayé des requetes de base comme écrire dans le champ Depart de toutes les lignes et ça marchait).
Bon je viens de tester ce que tu m'a donné. Plantage:
"Le projet a provoqué une classe d'exception EBDEngineError avec le message 'Erreur SQL générale. [Microsoft][Pilote ODBC Microsoft ACCESS] Fonction 'formatdatetime' non définie dans l'expression"
Query4->Close();
Query4->SQL->Clear();
Query4->SQL->Add("SELECT * UPDATE Train SET Depart = 'Autorisé' WHERE HDepart<=#15:00:00#");
Query4->ExecSQL();
La partie C++ est bonne (sinon il y aurait une erreur de compilation), c'est la requéte qui foire (car j'ai essayé des requetes de base comme écrire dans le champ Depart de toutes les lignes et ça marchait).
Bon je viens de tester ce que tu m'a donné. Plantage:
"Le projet a provoqué une classe d'exception EBDEngineError avec le message 'Erreur SQL générale. [Microsoft][Pilote ODBC Microsoft ACCESS] Fonction 'formatdatetime' non définie dans l'expression"
Voila ma requéte actuelle:
UPDATE Train SET Depart = 'Autorisé' WHERE HDepart > formatdatetime(Now(),0)
L'erreur:
Le projet a provoqué une classe d'exception EBDEngineError avec le message 'Erreur SQL générale. [Microsoft][Pilote ODBC Microsoft ACCESS] Fonction 'formatdatetime' non définie dans l'expression
UPDATE Train SET Depart = 'Autorisé' WHERE HDepart > formatdatetime(Now(),0)
L'erreur:
Le projet a provoqué une classe d'exception EBDEngineError avec le message 'Erreur SQL générale. [Microsoft][Pilote ODBC Microsoft ACCESS] Fonction 'formatdatetime' non définie dans l'expression
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voici ta réponse,
Fonctionne en requête SQL sous Access, pas testé sous Builder mais il n'y a aucune raison pour que ça ne fonctionne pas.
WHERE (((table.jour)<DateSerial(Hour(Now()),Minute(Now()),Second(Now()))))
En complément voici comment procéder si tu voudrais que ta condition soit supérieur à aujourd'hui
WHERE (((table.jour)>DateSerial(Year(Now()),Month(Now()),Day(Now()))))
Fonctionne en requête SQL sous Access, pas testé sous Builder mais il n'y a aucune raison pour que ça ne fonctionne pas.
WHERE (((table.jour)<DateSerial(Hour(Now()),Minute(Now()),Second(Now()))))
En complément voici comment procéder si tu voudrais que ta condition soit supérieur à aujourd'hui
WHERE (((table.jour)>DateSerial(Year(Now()),Month(Now()),Day(Now()))))