OVH Cloud OVH Cloud

Problème date

6 réponses
Avatar
Daniel Corréia
Bonsoir,


Comment faire pour qu'une requete sql contenant des dates fonctionne
indépendamment de la langue du système sur lequel est hébergé le site web ?

Si le serveur est en langue anglaise alors le format de date renvoyé est
mm/dd/aa
Si français alors le format devient dd/mm/aa


Utilisez des convert dans la construction de la requête SQL ???

Merci

--
Daniel CORREIA

6 réponses

Avatar
matt
moi je fais comme ça :
WHERE (dn = CONVERT(DATETIME, '1977-01-26 00:00:00', 102))
ça marche nikel

"Daniel Corréia" a écrit :

Bonsoir,


Comment faire pour qu'une requete sql contenant des dates fonctionne
indépendamment de la langue du système sur lequel est hébergé le site web ?

Si le serveur est en langue anglaise alors le format de date renvoyé est
mm/dd/aa
Si français alors le format devient dd/mm/aa


Utilisez des convert dans la construction de la requête SQL ???

Merci

--
Daniel CORREIA





Avatar
Philippe T [MS]
Bonjour,

Plutôt utiliser des fonctions de comparaison de date comme DATEDIFF par
exemple.

----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France

"Daniel Corréia" wrote in message
news:
Bonsoir,


Comment faire pour qu'une requete sql contenant des dates fonctionne
indépendamment de la langue du système sur lequel est hébergé le site web
?

Si le serveur est en langue anglaise alors le format de date renvoyé est
mm/dd/aa
Si français alors le format devient dd/mm/aa


Utilisez des convert dans la construction de la requête SQL ???

Merci

--
Daniel CORREIA




Avatar
BVesan
Bonjour,
La méthode la plus simple pour s'affranchir de la "représentation locale"
d'une date est d'utiliser la variable DATEFORMAT:

"SET DATEFORMAT ymd" va par exemple forcer l'interprétation de chaque date
comme étant du type "2006-03-22 17:26:34.000".

Je vous laisse regarder la description de SET DATEFORMAT dans les Books
Online pour plus de détails
Avatar
SQLpro [MVP]
Daniel Corréia a écrit :
Bonsoir,


Comment faire pour qu'une requete sql contenant des dates fonctionne
indépendamment de la langue du système sur lequel est hébergé le site web ?



il faut utiliser le format de la norme ISO (version date courte) qui est :
AAAAMMJJ


Cela marchera quelque soit les paramètres :
de l'OS (US, FR)
des paramètres régionaux du serveur ou des postes
de la connexion SQL Server
des applications clients
...



Si le serveur est en langue anglaise alors le format de date renvoyé est
mm/dd/aa
Si français alors le format devient dd/mm/aa


Utilisez des convert dans la construction de la requête SQL ???



JAMAIS !



Merci




A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
SQLpro [MVP]
matt a écrit :
moi je fais comme ça :
WHERE (dn = CONVERT(DATETIME, '1977-01-26 00:00:00', 102))
ça marche nikel



Chez vous sans doute !
mais certainement pas sur d'autres environnement.

Le seul format portable est AAAAMMJJ. Voir mon post dans cette enfilade.

A +


"Daniel Corréia" a écrit :

Bonsoir,


Comment faire pour qu'une requete sql contenant des dates fonctionne
indépendamment de la langue du système sur lequel est hébergé le site web ?

Si le serveur est en langue anglaise alors le format de date renvoyé est
mm/dd/aa
Si français alors le format devient dd/mm/aa


Utilisez des convert dans la construction de la requête SQL ???

Merci

--
Daniel CORREIA









--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
SQLpro [MVP]
BVesan a écrit :
Bonjour,
La méthode la plus simple pour s'affranchir de la "représentation locale"
d'une date est d'utiliser la variable DATEFORMAT:




non, il y a encore plus simple...
Lisez l'aide en ligne, rubrique :
"Rédaction d'instructions Transact-SQL internationales"
et mon post :
news://msnews.microsoft.com:119/

A +



"SET DATEFORMAT ymd" va par exemple forcer l'interprétation de chaque date
comme étant du type "2006-03-22 17:26:34.000".

Je vous laisse regarder la description de SET DATEFORMAT dans les Books
Online pour plus de détails




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************