Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/02/2007, 09h28   #1
Membre à l'essai
 
Inscription : mars 2004
Messages : 68
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 68
Points : 21
Points : 21
Par défaut P'tit problème de requête SQL

Salut,

J'ai un soucis de requête SQL
Dans ma BD access, j'ai un champ nommé "dat" où les dates sont au format français.
Mon serveur me donne des dates au format anglais.

Ma requête:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
'*1
session.LCID=&H040c
 
'*2
response.Write(date()-30&" | "& date())
 
SQL="SELECT TOP 3 * FROM job_annonce WHERE dat >= #"&date()-30&"# AND dat <= #"&date()&"# order by dat desc;"
 
Set RST = server.createobject("ADODB.Recordset")
RST.Open SQL,Con , 3, 3
 
'*3						
response.Write(RST("dat"))
*1
Sert à transformer mes dates au format français

*2
date()-30 et date() me donne respectivement le 03/01/2007 et le 02/02/2007

*3
Quand je retire la portion de code
Code :
WHERE dat >= #"&date()-30&"# AND dat <= #"&date()&"#
ça me donne le 25/01/2007

il faut que je retire cette portion de code pour tester car là est le problème.

Si je le laisse, il ne trouve aucun enregistrement.

Pourtant le 25/01/2007 se trouve entre le 03/01/2007 (date()-30) et le 02/02/2007 (date())


Quelqu'un à une idée ?

Merci
yoda_style est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 11h07   #2
Membre Expert
 
Avatar de Oluha
 
Inscription : novembre 2004
Messages : 2 161
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : novembre 2004
Messages : 2 161
Points : 2 051
Points : 2 051
si ton serveur est au format anglais il faut que tu lui donnes des dates au format anglais. Donc transforme les dates de ton paramètre au format MM/JJ/AAAA.

Ensuite pour les comparaison de dates le mieux c'est d'utiliser DATEDIFF ou une fonction équivalente.
Oluha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 11h33   #3
Membre à l'essai
 
Inscription : mars 2004
Messages : 68
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 68
Points : 21
Points : 21
Citation:
si ton serveur est au format anglais il faut que tu lui donnes des dates au format anglais. Donc transforme les dates de ton paramètre au format MM/JJ/AAAA.
Je transforme la date du servaur car je ne sais pas transformer les date dans la BD étant donné qu'elles n'en sont pas encore sortie
solution :
Code :
1
2
3
if rst("dat") <=date() AND  rst("dat") >=date()-30 then
    'affiche cet enregistrement
end if
mais j'aimerais bien ne pas avoir à faire cette condition, j'aimerais que ce soit fait directement depuis la requête.
yoda_style est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 11h46   #4
Membre Expert
 
Avatar de Oluha
 
Inscription : novembre 2004
Messages : 2 161
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : novembre 2004
Messages : 2 161
Points : 2 051
Points : 2 051
oui mais la fonction date() te renvois quoi ? la date en français ou en anglais ? pour que ta condition de requête fonctionne il faut bien évidemment que ca soit en anglais.
Oluha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 12h09   #5
Membre à l'essai
 
Inscription : mars 2004
Messages : 68
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 68
Points : 21
Points : 21
le serveur initialement me donne une date format anglais

MAIS je la transforme au format français grâce à ceci
et les différents response.write que j'ai mis dans mon code me donnent des dates en français

pour date()-30 -> 03/01/2007
date() -> 02/02/2007

et ce qui sort de ma BD est bien en format français également
rst("dat") -> 25/01/2007

donc les 3 dates avec lesquelles je dois travailler sont en français donc en principe je devrais pouvoir les comparer, ...
yoda_style est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 12h17   #6
Membre Expert
 
Avatar de Oluha
 
Inscription : novembre 2004
Messages : 2 161
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : novembre 2004
Messages : 2 161
Points : 2 051
Points : 2 051
ok j'avais compris que ton serveur bdd avait des dates anglaises, autant pour moi.

Et si tu mets des dates en dur dans ta condition de requêtes ca fonctionne ?

Sinon ce truc :
Ca ne fonctionnerait pas qu'à l'affichage ?
Oluha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 13h29   #7
Membre à l'essai
 
Inscription : mars 2004
Messages : 68
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 68
Points : 21
Points : 21
Non, je n'avais pas essayé de mettre mes dates en dur.

C'est fait

La requête ne fonctionnait pas non plus

Par contre quand j'ai retiré ça a marché et toutes mes dates se sont affichées en anglais (serveur et BD).

Mais j'ai peur d'une chose:
en français, la date du 25/01/2007 peut devenir 01/25/2007 en anglais sans doute possible.

Par contre, qu'en est-il du 10/01/2007 par exemple où il peut y avoir un doute. En français, c'est le 10 janvier et en anglais, c'est le 01 octobre.
Il me semble déjà avoir eu cette problématique dans le passé. quand c'est une date où il ne peut y avoir de doute, la date se transforme. Par contre quand elle peut se lire sans problème, il n'y bouge pas.

Une confirmation de ta part ???

Celà dit, je viens de tester cette éventualité mais je n'ai pas eu de problème.

Je tiens ça à l'oeil
yoda_style est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2007, 00h24   #8
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Salut,

Il me semble fort que la date affichée par une application web dépend de la langue du navigateur. Les options régionales du serveur peuvent entrer en ligne de compte.
Ceci dit il me semble bien que SQL passe les dates au format US lors de l'execution de la requete et cela quelque soient les options régionales.

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2007, 11h35   #9
Inactif
 
Inscription : mars 2002
Messages : 1 295
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2002
Messages : 1 295
Points : 1 345
Points : 1 345
Résolu ou pas?

Pour les dates, j'utilise year, month et day pour extraire les "morceaux" et recomposer les dates. Je me suis fait une fonction "fr vers us" et une "us vers fr". La connexion odbc que j'utilise attends/envoie des dates format "US", et j'affiche des dates format "français". Donc conversion quand c'est nécessaire
Florian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 20h49   #10
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Salut,

Pourquoi chercher midi à 14h ? Comme le dit si bien Florian inutile de te servir de session ou que sais-je
Sachant qu'il existe la variable date en asp après tu en fait ce que tu veux de la date

tu fais ceci :
Code :
1
2
3
4
5
<%
jj=day(date)
mm=month(date)
aa=year(date)
%>
ensuite tu concatènes comme tu veux la date jj+mm+aa, aa+jj+mm etc..
ici tu veux en fr donc :
Code :
<% aff_date=jj&"/"&mm&"/"aa %>
ensuite tu mets aff_date entre # j'imagine que ça tu sais le faire dans ta requete

Voilà ++ (et n'oublie pas le tag résolu)
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 00h10   #11
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Citation:
Envoyé par kaiser59
Pourquoi chercher midi à 14h ?
Ben c'est très utile quand on fait un site international (multilingue)...
A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 08h01   #12
Membre chevronné
 
Avatar de ryan
 
Inscription : juin 2003
Messages : 766
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 766
Points : 760
Points : 760
Par défaut Totalement HS

Yop!

@ Immobilis: Bon anniversaire à ton avatar, qui fêtait ses 50 ans hier!
ryan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h44.


 
 
 
 
Partenaires

Hébergement Web