|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Membre Expert
![]() Inscription : octobre 2007 Messages : 3 948 ![]() |
Bonjour voici une nouvelle facétie de SQL Serveur version Française
Je viens de chercher pendant un bon bout de temps pourquoi une requete qui fonctionne tres bien chez moi me donne un message d'erreur chez un utilisateur en France Code :
Citation:
La requete sur Date est dépendante du type d'installation du serveur !! Le serveur de l'utilisateur est installé en Français ! Il faut alors faire et non Je pense et j'espère qu'avec une requete parametrée je devrais m'en sortir Mais je trouve cependant cela horrible !! J'ose a peine imaginer ce que doit donner un Back-Up restore entre les deux serveurs dans ce cas !! Vos remarque sur mon interpretation de ce problème sont les bienvenues
__________________
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain) |
|||
|
|
00
|
|
|
#2 |
![]() ![]() Administrateur de base de données Inscription : août 2007 Messages : 1 159 ![]() |
Bonjour,
Le format de la date dépend en effet de la langue utilisée pour l'installation. Pour voir la liste des différents formats par langue installée: Pour le francais: Pour modifier le comportement de la session, vous pouvez utiliser la commande suivante par exemple: Pour plus d'information, cette commande et le comportement que vous décrivez sont expliqués dans la MSDN |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Il ne s'agit pas d'une facétie, mais d'un comportement attendu et normatif.
Le format normatif de conversion de STRING en DATETIME dans SQL Server repose sur la norme SQL qui imposait le format 'AAAAMMJJ hh:mm:ss.nnn' Ceci jusqu'à la norme SQL1999. Quelque soit les règles du serveur, ce format passe outre le paramétrage de langue. A partir de SQL Server 2008, qui a rajouté les type DATE, DATETIME2 et DATETIMEOFSSET, le format normatif ayant évolué, SQL Server prends désormais 'AAAA-MM-JJ ...' UNIQUEMENT pour les nouveaux types (afin de rester rétrocompatible). Si vous aviez cherché un peu, vous seriez tombé sur l'article que nous avons écrit à ce sujet : http://baptiste-wicht.developpez.com...-sql/datetime/ Effectivement le paramétrage SET FORMAT permet de prendre en compte des format exotique de conversion STRING DATE. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#4 |
![]() ![]() |
Ou sinon, toujours écrire une date avec la fonction CONVERT, comme ça plus jamais de problème de localisation.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : octobre 2007 Messages : 3 948 ![]() |
Merci a tous !
__________________
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain) |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : octobre 2007 Messages : 3 948 ![]() |
Bonjour
A la suite de ce Post J'avais cru comprendre que le format d'interpretation generique d'une date etait Je je decouvre que l'import export wizard n'aime pas du tout cela et qu'il exige En résumé la regle depends toujours du contexte !!
__________________
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain) |
|
|
00
|
|
|
#7 |
![]() ![]() |
Je me permets de m'auto-citer :
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#8 | |
|
Membre du Club
![]() Expert SQL Server Inscription : avril 2004 Messages : 52 ![]() |
Citation:
Code :
convert(datetime, '2012-02-22 01:02:03', 121) |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : octobre 2007 Messages : 3 948 ![]() |
Merci Seguei
Mais je cherche le format me permettant de faire un import a l'aide de l'import / export Wizard (j'ai +/- 400.000 rows a importer) yyyy-MM-dd fonctionne pour les dates ayant une valeur Par contre si je laisse le champ vide pour une date nulle j'ai une erreur de conversion Je cherche encore
__________________
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain) |
|
|
00
|
|
|
#10 | |||
|
Membre du Club
![]() Expert SQL Server Inscription : avril 2004 Messages : 52 ![]() |
Citation:
Code :
|
|||
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : octobre 2007 Messages : 3 948 ![]() |
Merci Serguei
Mais je parle maintenant d'un probleme de format de date non pas dans une commande SQL mais lors de l'usage de l'import / export Wizard Une date ayant une valeur se presente dans une colonne tab délimitée \t20120221\t et nulle c'est \t\t Mais il semble que l'import export Wizard ne puisse pas traiter les valeurs vides !!
__________________
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain) |
|
|
00
|
|
|
#12 | |
|
Membre du Club
![]() Expert SQL Server Inscription : avril 2004 Messages : 52 ![]() |
Citation:
Voir PJ : le fichier source et la capture d’écran. Sinon essaie BCP. |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Inscription : octobre 2007 Messages : 3 948 ![]() |
Merci Serguei
Tu utilise 2005 ou 2008 ? J'ai lu qu'en 2008 le comportement avait changé En tout cas j'ai contourné en mettant une valeur sentinelle et par apres je fais un update
__________________
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain) |
|
|
00
|
|
|
#14 | |||||
|
Membre du Club
![]() Expert SQL Server Inscription : avril 2004 Messages : 52 ![]() |
Citation:
Alors, je te propose une méthode propre qui traite les valeurs vides comme "null" en 2005 et 2008. Il te faut un fichier de format en plus (voir PJ) Puis, on crée la table cible Code :
Code :
|
|||||
|
00
|
|
|
#15 |
|
Membre Expert
![]() Inscription : octobre 2007 Messages : 3 948 ![]() |
Merci Serguei
Intéressant je n'avais jamais utilisé le Bulk Insert C'est bon a connaitre
__________________
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com