Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD10] quel format pour une date dans une requête Sql sur une base Access ?

9 réponses
Avatar
Juanito
Bonsoir,

Je suis en train de faire une requête sur une base Access en OleDb et j'ai
des soucis sur le format des dates .

J'ai une colonne dans la base qui est DateTime mais lorsque je la regarde
avec Access elle ne contient que jj/mm/aaaa. C'est peut être un masque
d'affichage ?

J'ai essayé de mettre

Select * From Journal Where Date = '20060101' et cela plante sur un mauvais
format

J'ai mis aussi

Select * From Journal Where Date = '01/01/2006' et cela plante aussi

J'ai essayé

Select * From Journal Where Date = '20060101 00:00:00' et cela plante aussi

J'ai essayé de définir une variable DateHeure en Windev et de la mettre dans
le test et c'est pareil.

Que faut-il mettre comme format pour que cela passe ?

Cordialement.

Jean

9 réponses

Avatar
mat
Juanito wrote:
Bonsoir,

Je suis en train de faire une requête sur une base Access en OleDb et j'ai
des soucis sur le format des dates .



Des dates Access sont toujours dans le format "MM/JJ/AAAA".

Salutations
Mat
Avatar
Pascal ROY
Juanito a écrit :
Bonsoir,

Je suis en train de faire une requête sur une base Access en OleDb et j'ai
des soucis sur le format des dates .

J'ai une colonne dans la base qui est DateTime mais lorsque je la regarde
avec Access elle ne contient que jj/mm/aaaa. C'est peut être un masque
d'affichage ?

J'ai essayé de mettre

Select * From Journal Where Date = '20060101' et cela plante sur un mauvais
format

J'ai mis aussi

Select * From Journal Where Date = '01/01/2006' et cela plante aussi

J'ai essayé

Select * From Journal Where Date = '20060101 00:00:00' et cela plante aussi

J'ai essayé de définir une variable DateHeure en Windev et de la mettre dans
le test et c'est pareil.

Que faut-il mettre comme format pour que cela passe ?

Cordialement.

Jean




Bonjour,
Pour les update de champs date/time sous access je passe la valeur
sous la forme : #AAAA-MM-JJ HH-MM-SS#
Les # ne sont pas superflue ;-)
Ce qui est marrant c'est que pour les Insert, je passe la date au même
format, mais sans les # !!!
Ca doit être de la logique Microsoft !
Attention, dans le cas des UpDate, pas de simple quotes, alors que pour les
insert les simples quotes sont obligatoires !

Voila mon expérience.

A noter que j'utiliser les acces AlterNatif (ADO4WD)
Et je c'est la même chose pour WD55 et WD75 (les 2 versions que
j'utilise), mais ça ne devrait pas dépendre de Windev !

--
Pascal ROY
(Service Informatique - SODALEC)
Avatar
Gégé
mat a écrit :
Des dates Access sont toujours dans le format "MM/JJ/AAAA".



Je dirais même plus : le format DATETIME est sous la forme AAAAMMJJ HH:MM:SS
Avatar
Juanito
Bonjour,

Merci pour toutes vos réponses

J'ai essayé un peu tout et cela ne fonctionne pas. J'ai un message
m'indiquant que le format n'est pas correct.

Si je prends WdSql et que je fait une requête me ramenant tout dans une
fiche, la date est comme suit : 20060403000000000

Si je demande donc Date 060403000000000 cela ne plante pas mais cela ne me
ramène rien alors que j'ai des données ... ;-(

Si je mets '20060403000000000' (avec des quotes), cela plante donc on dirait
qu'il considère la date-heure comme du numérique. (?)

Si je mets Date <> 0 cela ne plante pas et me renvoie tout. Comment vais-je
lui donner la bonne date ?

Dans le type de liaison de la connexion j'ai mis "Access 97" (avec
Access2000 c'est pareil). Je ne suis donc pas en Odbc.

Avec quel outil puis-je voir dans quel format il attend cette donnée ?

Jean

"Gégé" a écrit dans le message de news:
e12eqd$mg3$
mat a écrit :
Des dates Access sont toujours dans le format "MM/JJ/AAAA".



Je dirais même plus : le format DATETIME est sous la forme AAAAMMJJ
HH:MM:SS


Avatar
Juanito
Bon oubliez ce que j'ai dit.

Il faut mettre Date = #MM/JJ/AAAA#

J'avais essayé mais avec des quotes de chaque côté.

Cela semble marcher aussi avec date = #AAAA-MM-JJ#

Merci de m'avoir mis sur la piste.

Jean Cougnaud


"Juanito" a écrit dans le message de news:
44341a4c$0$5189$
Bonsoir,

Je suis en train de faire une requête sur une base Access en OleDb et j'ai
des soucis sur le format des dates .

J'ai une colonne dans la base qui est DateTime mais lorsque je la regarde
avec Access elle ne contient que jj/mm/aaaa. C'est peut être un masque
d'affichage ?

J'ai essayé de mettre

Select * From Journal Where Date = '20060101' et cela plante sur un
mauvais format

J'ai mis aussi

Select * From Journal Where Date = '01/01/2006' et cela plante aussi

J'ai essayé

Select * From Journal Where Date = '20060101 00:00:00' et cela plante
aussi

J'ai essayé de définir une variable DateHeure en Windev et de la mettre
dans le test et c'est pareil.

Que faut-il mettre comme format pour que cela passe ?

Cordialement.

Jean




Avatar
Juanito
En plus il faut mettre hRequeteSansCorrection dans la requête Sql sinon
cela ne passe pas.

Jean Cougnaud

"Juanito" a écrit dans le message de news:
44341a4c$0$5189$
Bonsoir,

Je suis en train de faire une requête sur une base Access en OleDb et j'ai
des soucis sur le format des dates .

J'ai une colonne dans la base qui est DateTime mais lorsque je la regarde
avec Access elle ne contient que jj/mm/aaaa. C'est peut être un masque
d'affichage ?

J'ai essayé de mettre

Select * From Journal Where Date = '20060101' et cela plante sur un
mauvais format

J'ai mis aussi

Select * From Journal Where Date = '01/01/2006' et cela plante aussi

J'ai essayé

Select * From Journal Where Date = '20060101 00:00:00' et cela plante
aussi

J'ai essayé de définir une variable DateHeure en Windev et de la mettre
dans le test et c'est pareil.

Que faut-il mettre comme format pour que cela passe ?

Cordialement.

Jean




Avatar
Pascal F
Juanito avait énoncé :
Bonjour,

Merci pour toutes vos réponses

J'ai essayé un peu tout et cela ne fonctionne pas. J'ai un message m'indiquant que le format n'est pas correct.

Si je prends WdSql et que je fait une requête me ramenant tout dans une fiche, la date est comme suit : 20060403000000000

Si je demande donc Date 060403000000000 cela ne plante pas mais cela ne me ramène rien alors que j'ai des données ... ;-(

Si je mets '20060403000000000' (avec des quotes), cela plante donc on dirait qu'il considère la date-heure comme du numérique.
(?)

Si je mets Date <> 0 cela ne plante pas et me renvoie tout. Comment vais-je lui donner la bonne date ?

Dans le type de liaison de la connexion j'ai mis "Access 97" (avec Access2000 c'est pareil). Je ne suis donc pas en Odbc.

Avec quel outil puis-je voir dans quel format il attend cette donnée ?

Jean

"Gégé" a écrit dans le message de news: e12eqd$mg3$
mat a écrit :
Des dates Access sont toujours dans le format "MM/JJ/AAAA".



Je dirais même plus : le format DATETIME est sous la forme AAAAMMJJ HH:MM:SS





Voici la fonction que j'utilisais en 5.5 pour faire des requete SQL sur access:

// construction de la requete SQL:
SQLRiv:Requete="SELECT Acompte_Gestion.NumFacture"+rc+...
"FROM Acompte_Gestion "+rc+...
"WHERE ((Acompte_Gestion.dateAcompte) Between "+SQLRiv:SQLDate(Date1Deb)+...
" AND "+SQLRiv:SqlDate(Date1Fin)+") AND Acompte_Gestion.`Flag_ConviCompta` =0 "+...
" AND (Acompte_Gestion.CAMO<>0 OR Acompte_Gestion.CAMarchandise<>0 )"



Procédure SQLRiv:SQLDate(Champ)

si pas datevalide(champ) alors
renvoyer 0
sinon
renvoyer dateversentier(champ)-36523 // la base de date d'access est différente de la base de date WD
fin

--
Pascal

Ne garder que le prénom pour me joindre
Avatar
Fredo MT
Bonjour Juanito,

la syntaxe qui me paraît la plus propre et la plus correcte est celle-ci

Select * From Journal Where FORMAT(Date,'dd/mm/yyyy') = '01/01/2006'

Voilà.

Je m'étais bien pris le chou à l'époque avec des ## et des trucs comme ça,
mais en fonction des paramètres régionaux de dates ça ne marchait pas, bref
une galère. Mais avec cette syntaxe cela fonctionne tout le temps.


"Juanito" a écrit dans le message de news:
4434c752$0$19117$
En plus il faut mettre hRequeteSansCorrection dans la requête Sql sinon
cela ne passe pas.

Jean Cougnaud

"Juanito" a écrit dans le message de news:
44341a4c$0$5189$
Bonsoir,

Je suis en train de faire une requête sur une base Access en OleDb et
j'ai des soucis sur le format des dates .

J'ai une colonne dans la base qui est DateTime mais lorsque je la regarde
avec Access elle ne contient que jj/mm/aaaa. C'est peut être un masque
d'affichage ?

J'ai essayé de mettre

Select * From Journal Where Date = '20060101' et cela plante sur un
mauvais format

J'ai mis aussi

Select * From Journal Where Date = '01/01/2006' et cela plante aussi

J'ai essayé

Select * From Journal Where Date = '20060101 00:00:00' et cela plante
aussi

J'ai essayé de définir une variable DateHeure en Windev et de la mettre
dans le test et c'est pareil.

Que faut-il mettre comme format pour que cela passe ?

Cordialement.

Jean








Avatar
Juanito
Merci, je vais essayer.

Jean

"Fredo MT" a écrit dans le message de news:
44353d60$0$2075$
Bonjour Juanito,

la syntaxe qui me paraît la plus propre et la plus correcte est celle-ci

Select * From Journal Where FORMAT(Date,'dd/mm/yyyy') = '01/01/2006'

Voilà.

Je m'étais bien pris le chou à l'époque avec des ## et des trucs comme ça,
mais en fonction des paramètres régionaux de dates ça ne marchait pas,
bref une galère. Mais avec cette syntaxe cela fonctionne tout le temps.


"Juanito" a écrit dans le message de news:
4434c752$0$19117$
En plus il faut mettre hRequeteSansCorrection dans la requête Sql
sinon cela ne passe pas.

Jean Cougnaud

"Juanito" a écrit dans le message de news:
44341a4c$0$5189$
Bonsoir,

Je suis en train de faire une requête sur une base Access en OleDb et
j'ai des soucis sur le format des dates .

J'ai une colonne dans la base qui est DateTime mais lorsque je la
regarde avec Access elle ne contient que jj/mm/aaaa. C'est peut être un
masque d'affichage ?

J'ai essayé de mettre

Select * From Journal Where Date = '20060101' et cela plante sur un
mauvais format

J'ai mis aussi

Select * From Journal Where Date = '01/01/2006' et cela plante aussi

J'ai essayé

Select * From Journal Where Date = '20060101 00:00:00' et cela plante
aussi

J'ai essayé de définir une variable DateHeure en Windev et de la mettre
dans le test et c'est pareil.

Que faut-il mettre comme format pour que cela passe ?

Cordialement.

Jean