web-dev-qa-db-fra.com

Modifier le format d'heure de date par défaut sur une seule base de données dans SQL Server

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.

20
Omar Kooheji

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

21
kristof

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)!

11
Philippe Grondier

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.

4
SergeyT

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

4
Nick Berardi

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"

0
Nick Berardi