J'ai besoin de changer le format de date de US (mm/dd/YYYY) à UK (dd/mm/YYYY) sur une seule base de données sur une machine serveur SQL.
Comment cela peut-il être fait?
J'ai vu des déclarations qui le font pour l'ensemble du système et celles qui le font pour la session, mais je ne peux pas changer le code maintenant car il devra à nouveau passer par le contrôle qualité, j'ai donc besoin d'une solution rapide pour changer le format date-heure.
Mise à jour
Je me rends compte que la date et l'heure n'ont rien à voir avec la façon dont SQL Server stocke les données, mais cela a beaucoup à voir avec la façon dont il analyse les requêtes.
J'insère des données brutes d'un fichier XML dans une base de données. Les dates dans le fichier XML sont au format de date britannique.
Vous pouvez utiliser SET DATEFORMAT, comme dans cet exemple
declare @dates table (orig varchar(50) ,parsed datetime)
SET DATEFORMAT ydm;
insert into @dates
select '2008-09-01','2008-09-01'
SET DATEFORMAT ymd;
insert into @dates
select '2008-09-01','2008-09-01'
select * from @dates
Vous devez spécifier le format de date dans le code lorsque vous analysez vos données XML
Afin d'éviter de traiter ces problèmes très ennuyeux, je vous conseille de toujours analyser vos données avec le format de date SQL/ISO standard et unique qui est AAAA-MM-JJ. Vos requêtes fonctionneront ensuite à l'international, quels que soient les paramètres de date sur votre serveur principal ou sur les clients interrogateurs (où les paramètres de date locaux peuvent être différents de ceux du serveur principal)!
Bien que vous ne puissiez pas définir le format de date par défaut pour une seule base de données, vous pouvez changer la langue par défaut pour une connexion utilisée pour accéder à cette base de données:
ALTER LOGIN your_login WITH DEFAULT_LANGUAGE=British
Dans certains cas, cela aide.
Vous ne pouvez changer la langue que sur l'ensemble du serveur, pas sur les bases de données individuelles. Cependant, si vous devez prendre en charge le Royaume-Uni, vous pouvez exécuter la commande suivante avant toutes les entrées et sorties:
set language 'british english'
Ou si vous rencontrez des problèmes pour saisir les heures de données à partir de votre application, vous pouvez envisager un type d'entrée universel tel que
1-déc-2008
Si c'est vraiment un problème d'AQ et que vous ne pouvez pas changer le code. Configurez une nouvelle instance de serveur sur la machine et configurez la langue comme "British English"