OVH Cloud OVH Cloud

Configuration du langage ou du format des dates

6 réponses
Avatar
David G.
Bonjour,

Je suis confronté à un problème avec Sql Server 2005. J'ai un système sur
lequel je n'ai, malheureusement, absolument pas la main. Je viens de
m'apercevoir que des requêtes sont exécutées mais que le format de certaines
informations, les dates pour le moment mais peut être d'autres, ne convient
pas au serveur. J'ai réussi à récupérer la requête qui est exécutée et la
date est envoyée sous la forme d'une chaîne de caractères avec le format
suivant : YYYY-MM-DD.

Si je fais un Set Language us_english ou un Set Dateformat ymd, la requête
passe sans problème, sinon j'ai le droit à l'erreur suivante : La conversion
d'un type de données CHAR en type DATETIME a donnée une valeur hors limite
de date et d'heure. Comme je n'ai la main à aucun moment, je ne peux pas
forcer le langage de la session ou le format de date à utiliser. Ce que
j'aimerais donc faire, c'est dire que la base doit utiliser le langage
us_english ou tel format de date, mais je n'ai trouvé nul part comment
configurer la base ainsi.

Est-ce possible ? Si oui, comment ? Car à priori Sql Server 2005 se base sur
les options régionales du poste à l'installation et j'ai peur qu'il s'en
serve par la suite pour toutes les bases créées dessus.

Merci.

6 réponses

Avatar
SQLpro [MVP]
David G. a écrit :
Bonjour,

Je suis confronté à un problème avec Sql Server 2005. J'ai un système sur
lequel je n'ai, malheureusement, absolument pas la main. Je viens de
m'apercevoir que des requêtes sont exécutées mais que le format de certaines
informations, les dates pour le moment mais peut être d'autres, ne convient
pas au serveur. J'ai réussi à récupérer la requête qui est exécutée et la
date est envoyée sous la forme d'une chaîne de caractères avec le format
suivant : YYYY-MM-DD.

Si je fais un Set Language us_english ou un Set Dateformat ymd, la requête
passe sans problème, sinon j'ai le droit à l'erreur suivante : La conversion
d'un type de données CHAR en type DATETIME a donnée une valeur hors limite
de date et d'heure. Comme je n'ai la main à aucun moment, je ne peux pas
forcer le langage de la session ou le format de date à utiliser. Ce que
j'aimerais donc faire, c'est dire que la base doit utiliser le langage
us_english ou tel format de date, mais je n'ai trouvé nul part comment
configurer la base ainsi.



Le seul format universel portable de date est le format ISO court, c'est
à dire :
AAAAMMJJ
dans ce cas aucun paramétrage n'est nécessaire.


Est-ce possible ? Si oui, comment ? Car à priori Sql Server 2005 se base sur
les options régionales du poste à l'installation et j'ai peur qu'il s'en
serve par la suite pour toutes les bases créées dessus.

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
David G.
"SQLpro [MVP]" a écrit dans le message de news:


Le seul format universel portable de date est le format ISO court, c'est à
dire :
AAAAMMJJ
dans ce cas aucun paramétrage n'est nécessaire.




Malheureusement dans le contexte où je me trouve je n'ai aucune liberté, je
ne peux intervenir à aucun moment sur la requête exécutée pour la modifier,
et la seule solution consiste à ce que mon serveur 2005 puisse comprendre du
AAAA-MM-JJ. Il faudrait que je puisse changer le format des dates qu'il
prend en charge (DBCC USEROPTIONS indique un format en DMY) indépendemment
de toute session. Y-a-t-il moyen de modifier ce format au niveau de la base,
ou du serveur ?
Avatar
Med Bouchenafa
Il n'y a pas une notion de langue par base de données mais par utilisateur
Change la langue utilisée par l'utilisateur de cette requete
En 2005
ALTER LOGIN login_name WITH DEFAULT_LANGUAGE = language

Toutes les requetes utilisées par cette utilisateur utiliseront alors
automatiquement le format de langue choisie

--
Bien cordialement
Med Bouchenafa
"David G." a écrit dans le message de news:
%
Bonjour,

Je suis confronté à un problème avec Sql Server 2005. J'ai un système sur
lequel je n'ai, malheureusement, absolument pas la main. Je viens de
m'apercevoir que des requêtes sont exécutées mais que le format de
certaines informations, les dates pour le moment mais peut être d'autres,
ne convient pas au serveur. J'ai réussi à récupérer la requête qui est
exécutée et la date est envoyée sous la forme d'une chaîne de caractères
avec le format suivant : YYYY-MM-DD.

Si je fais un Set Language us_english ou un Set Dateformat ymd, la requête
passe sans problème, sinon j'ai le droit à l'erreur suivante : La
conversion d'un type de données CHAR en type DATETIME a donnée une valeur
hors limite de date et d'heure. Comme je n'ai la main à aucun moment, je
ne peux pas forcer le langage de la session ou le format de date à
utiliser. Ce que j'aimerais donc faire, c'est dire que la base doit
utiliser le langage us_english ou tel format de date, mais je n'ai trouvé
nul part comment configurer la base ainsi.

Est-ce possible ? Si oui, comment ? Car à priori Sql Server 2005 se base
sur les options régionales du poste à l'installation et j'ai peur qu'il
s'en serve par la suite pour toutes les bases créées dessus.

Merci.



Avatar
SQLpro [MVP]
David G. a écrit :
"SQLpro [MVP]" a écrit dans le message de news:

Le seul format universel portable de date est le format ISO court, c'est à
dire :
AAAAMMJJ
dans ce cas aucun paramétrage n'est nécessaire.




Malheureusement dans le contexte où je me trouve je n'ai aucune liberté, je
ne peux intervenir à aucun moment sur la requête exécutée pour la modifier,
et la seule solution consiste à ce que mon serveur 2005 puisse comprendre du
AAAA-MM-JJ. Il faudrait que je puisse changer le format des dates qu'il
prend en charge (DBCC USEROPTIONS indique un format en DMY) indépendemment
de toute session. Y-a-t-il moyen de modifier ce format au niveau de la base,
ou du serveur ?



absolument pas.

La seule possibilité est de rajouter au début de la session un SET
DATEFORMAT YMD.

C'est un défaut de conception de l'application concernant la base de
données.

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
David G.
"Med Bouchenafa" a écrit dans le message de news:

Il n'y a pas une notion de langue par base de données mais par utilisateur
Change la langue utilisée par l'utilisateur de cette requete
En 2005
ALTER LOGIN login_name WITH DEFAULT_LANGUAGE = language

Toutes les requetes utilisées par cette utilisateur utiliseront alors
automatiquement le format de langue choisie



Le problème semble être réglé avec cette manipulation. Merci beaucoup :-)
Avatar
Med Bouchenafa
Désolé, fallait bien lire cet utilisateur et non "cette utilisateur"
Je pensais probablement à une utilisatrice....

--
Bien cordialement
Med Bouchenafa

"David G." a écrit dans le message de news:
%
"Med Bouchenafa" a écrit dans le message de news:

Il n'y a pas une notion de langue par base de données mais par
utilisateur
Change la langue utilisée par l'utilisateur de cette requete
En 2005
ALTER LOGIN login_name WITH DEFAULT_LANGUAGE = language

Toutes les requetes utilisées par cette utilisateur utiliseront alors
automatiquement le format de langue choisie



Le problème semble être réglé avec cette manipulation. Merci beaucoup :-)