2008-12-01 11 views
18

Je dois modifier le format de date de US (mm/jj/aaaa) en UK (jj/mm/aaaa) sur une base de données unique sur un serveur SQL.Modifier le format d'heure date par défaut dans une base de données unique dans SQL Server

Comment cela peut-il être fait? J'ai vu des instructions qui font cela pour tout le système, et celles qui le font pour la session, mais je ne peux pas changer le code maintenant car il devra passer à nouveau par QA, donc j'ai besoin d'un rapide corriger pour changer le format de l'heure de la date.

Mise à jour

Je me rends compte que le temps de la date n'a rien à voir avec la façon dont SQL Server stocke les données, mais il a beaucoup à voir avec la façon dont il analyse les requêtes. Je passe 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 UK.

Répondre

20

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 dateformat dans le code lorsque vous analysez vos données XML

+13

Cela modifie le format de date SESSION, pas la base de données. –

+1

@Y. Ecarri - comment changer le format de date DATABASE (pas datetime)? Dans mon serveur SQL, le format est aaaa-mm-jj, mais j'ai besoin de mm/jj/aaaa en permanence. S'il vous plaît aider. – xameeramir

-1

Vous vous rendez compte que le format n'a rien à voir avec la façon dont SQL Server stocke datetime, n'est-ce pas? Vous pouvez utiliser set dateformat pour chaque session. Il n'y a pas de paramètre pour la base de données uniquement.

Si vous utilisez des paramètres pour l'insertion de données ou la mise à jour ou le filtrage, vous n'aurez aucun problème avec cela.

+0

Voir la réponse à la question précédente –

3

Vous ne pouvez modifier la langue que sur le serveur entier et non sur des bases de données individuelles. Toutefois, si vous avez besoin pour soutenir 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 entrant dans datatimes de votre demande, vous pourriez envisager un type d'entrée universel tel que

1-décembre-2008

+1

Comment changer la langue sur le serveur? –

0

Si cela est vraiment une question d'assurance qualité et vous ne pouvez pas modifier le code. Installez une nouvelle instance de serveur sur la machine et configurez la langue comme "Anglais britannique"

10

Afin d'éviter ces problèmes très ennuyeux, je vous conseille de toujours analyser vos données avec la norme et la date SQL/ISO unique format qui est AAAA-MM-JJ. Vos requêtes fonctionneront alors au niveau international, quels que soient les paramètres de date sur votre serveur principal ou sur les clients d'interrogation (où les paramètres de date locale peuvent être différents des paramètres du serveur principal)!

+1

Malheureusement, je ne génère pas les données juste consommung it. –

+6

Philippe - J'en étais convaincu aussi jusqu'à ce que quelqu'un me montre un exemple dans SQL Server 2008 quand la date spécifiée comme 2008-09-01 a été traduite au 9 janvier 2008 quand la région était définie sur US. – kristof

+0

En règle générale, j'essaie d'éviter d'utiliser la date au format chaîne au niveau de la base de données. Lors de la saisie de données, je jetterais la chaîne à ce jour au niveau de l'application en utilisant les paramètres régionaux appropriés, de sorte qu'elle atteigne le type de date db au format datetime. De cette façon, il est indépendant sur les paramètres locaux – kristof

-1

Utilisation:

select * from mytest 
EXEC sp_rename 'mytest.eid', 'id', 'COLUMN' 
alter table mytest add id int not null identity(1,1) 
update mytset set eid=id 
ALTER TABLE mytest DROP COLUMN eid 

ALTER TABLE [dbo].[yourtablename] ADD DEFAULT (getdate()) FOR [yourfieldname] 

Cela fonctionne à 100%.

-1

Pour SQL Server 2008 run:

EXEC sp_defaultlanguage 'username', 'british' 
4

Bien que vous ne pouvez 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 qui est utilisé pour accéder à cette base de données:

ALTER LOGIN your_login WITH DEFAULT_LANGUAGE=British 

Dans certains cas, cela aide.

Questions connexes