OVH Cloud OVH Cloud

Problème de DATE avec SQL et ASP

3 réponses
Avatar
Cédric Boivin
Je suis en train de transferer des donn=E9e d'un serveur=20
2000 vers un serveur 2003, cependant les configuration=20
r=E9gional ne sont pas les m=EAme. Donc quand sql =E0 =E9t=E9=20
install=E9 sur le serveur 2003 il =E9tait en francais format=20
de date (jj-mm-aaaa) et mon serveur 2000 en anglais dans=20
le format suivant (mm/jj/aaaa). Quand j'ai mis mes donn=E9e=20
sur le nouveau serveur les dates ne correspondent plus.=20
Alors j'ai chercher un moyen de changer le format de date=20
du serveur sql et le seul moyen que j'ai trouv=E9 c'est set=20
SET DATEFORMAT mdy ( ca semble avoir march=E9 ) sauf que=20
maintenant aussitot que j'essai de faire un update dans=20
un champs date de mon serveur 2003 =E0 partir d'une page=20
ASP j'ai l'erreur suivante. (Voici l'erreur plus ma=20
requete)


Update connectionactuelle set date=3D'05/13/2004',=20
datemouvement=3D'05/13/2004', heuremouvement=3D'13:26:14',=20
location=3D'/logiciel/catalogue/commande/index.asp',=20
querrystring=3D'' where id_user=3D14 and=20
distributionAuto=3D'{4DF15B3C-C896-46D8-8490-
3F2A142DAAEC}'05/13/2004=20
Microsoft OLE DB Provider for SQL Server=20
erreur '80040e07'=20

La conversion d'un type de donn=E9es CHAR en type DATETIME=20
a donn=E9 une valeur hors des limites des valeurs de date=20
et d'heure.=20

/logiciel/_altitude_securite/ecritureetat.asp, ligne 43=20


Est-ce que quelqu'un peut m'aider. Merci.

3 réponses

Avatar
Patrice
Pour une solution rapide changer également le SET DATEFORMAT par exemple
dans l'appli ASPn, dans la chaine de connexion ou dans le paramétrage du
serveur (sp_configure de mémoire ?)

Il est recommandé plutôt :
- soit de transférer les données sous forme "typée" et non pas sous forme de
texte dans une instruction SQL.
- soit d'utiliser un format de date sous forme de texte qui est indépendant
de la langue comme le format "ISO" YYYYMMAA dans les applications.

De cette façon, l'application n'est pas sensible à la langue actuellement
configurée.


"Cédric Boivin" a écrit dans le
message de news:cb4101c43911$cc9105a0$
Je suis en train de transferer des donnée d'un serveur
2000 vers un serveur 2003, cependant les configuration
régional ne sont pas les même. Donc quand sql à été
installé sur le serveur 2003 il était en francais format
de date (jj-mm-aaaa) et mon serveur 2000 en anglais dans
le format suivant (mm/jj/aaaa). Quand j'ai mis mes donnée
sur le nouveau serveur les dates ne correspondent plus.
Alors j'ai chercher un moyen de changer le format de date
du serveur sql et le seul moyen que j'ai trouvé c'est set
SET DATEFORMAT mdy ( ca semble avoir marché ) sauf que
maintenant aussitot que j'essai de faire un update dans
un champs date de mon serveur 2003 à partir d'une page
ASP j'ai l'erreur suivante. (Voici l'erreur plus ma
requete)


Update connectionactuelle set date='05/13/2004',
datemouvement='05/13/2004', heuremouvement='13:26:14',
location='/logiciel/catalogue/commande/index.asp',
querrystring='' where id_user and
distributionAuto='{4DF15B3C-C896-46D8-8490-
3F2A142DAAEC}'05/13/2004
Microsoft OLE DB Provider for SQL Server
erreur '80040e07'

La conversion d'un type de données CHAR en type DATETIME
a donné une valeur hors des limites des valeurs de date
et d'heure.

/logiciel/_altitude_securite/ecritureetat.asp, ligne 43


Est-ce que quelqu'un peut m'aider. Merci.
Avatar
Steve Kass
Cédric,

Pour éviter le problême, il faut convertir les chaînes-date
explicitement, ou les spécifier avec un format langue-insensitive comme
'aaaammjj' ou 'aaaa-mm-jjThh:mm:ss.fff' (la caractère T est nécessaire):

update connectionactuelle set
date = convert(smalldatetime, '05/13/2004',101),
datemouvement = convert(smalldatetime, '05/13/2004',101),
etc.


update connectionactuelle set
date = '20040513',
...

ou
update connectionactuelle set
datemouvement = '2004-05-13T00:00:00.000',
etc.

Steve Kass
Drew University

Cédric Boivin wrote:

Je suis en train de transferer des donnée d'un serveur
2000 vers un serveur 2003, cependant les configuration
régional ne sont pas les même. Donc quand sql à été
installé sur le serveur 2003 il était en francais format
de date (jj-mm-aaaa) et mon serveur 2000 en anglais dans
le format suivant (mm/jj/aaaa). Quand j'ai mis mes donnée
sur le nouveau serveur les dates ne correspondent plus.
Alors j'ai chercher un moyen de changer le format de date
du serveur sql et le seul moyen que j'ai trouvé c'est set
SET DATEFORMAT mdy ( ca semble avoir marché ) sauf que
maintenant aussitot que j'essai de faire un update dans
un champs date de mon serveur 2003 à partir d'une page
ASP j'ai l'erreur suivante. (Voici l'erreur plus ma
requete)


Update connectionactuelle set date='05/13/2004',
datemouvement='05/13/2004', heuremouvement='13:26:14',
location='/logiciel/catalogue/commande/index.asp',
querrystring='' where id_user and
distributionAuto='{4DF15B3C-C896-46D8-8490-
3F2A142DAAEC}'05/13/2004
Microsoft OLE DB Provider for SQL Server
erreur '80040e07'

La conversion d'un type de données CHAR en type DATETIME
a donné une valeur hors des limites des valeurs de date
et d'heure.

/logiciel/_altitude_securite/ecritureetat.asp, ligne 43


Est-ce que quelqu'un peut m'aider. Merci.





Avatar
Cédric Boivin
J'ai finalement réussie à me sortir de ce casse tête, et
c'était une vrai farce.

Tout a bien fonctionner avec le set DATEFORMAT, il me
restait simplement a changer la langue de mes user de
connexion a la bd.


Il était encore en francais et mon setup de format de
date était en anglais. Donc j'ai mis la langue de mes
user en anglais et celle par defaut en anglais et le
problème c'est règler.


Merci
-----Message d'origine-----
Je suis en train de transferer des donnée d'un serveur
2000 vers un serveur 2003, cependant les configuration
régional ne sont pas les même. Donc quand sql à été
installé sur le serveur 2003 il était en francais format
de date (jj-mm-aaaa) et mon serveur 2000 en anglais dans
le format suivant (mm/jj/aaaa). Quand j'ai mis mes


donnée
sur le nouveau serveur les dates ne correspondent plus.
Alors j'ai chercher un moyen de changer le format de


date
du serveur sql et le seul moyen que j'ai trouvé c'est


set
SET DATEFORMAT mdy ( ca semble avoir marché ) sauf que
maintenant aussitot que j'essai de faire un update dans
un champs date de mon serveur 2003 à partir d'une page
ASP j'ai l'erreur suivante. (Voici l'erreur plus ma
requete)


Update connectionactuelle set date='05/13/2004',
datemouvement='05/13/2004', heuremouvement='13:26:14',
location='/logiciel/catalogue/commande/index.asp',
querrystring='' where id_user and
distributionAuto='{4DF15B3C-C896-46D8-8490-
3F2A142DAAEC}'05/13/2004
Microsoft OLE DB Provider for SQL Server
erreur '80040e07'

La conversion d'un type de données CHAR en type DATETIME
a donné une valeur hors des limites des valeurs de date
et d'heure.

/logiciel/_altitude_securite/ecritureetat.asp, ligne 43


Est-ce que quelqu'un peut m'aider. Merci.

.