2009-02-12 10 views
2

Dans ma base de données, une table a été créée à partir d'une feuille Excel via une option de serveur lié. J'essaie maintenant de comparer son contenu par rapport à l'un de mes tableaux principaux.Comparaison de dates SQL Server 2005 - problèmes de classement

Les tableaux que je compare sont dans la même base de données.

Il existe une colonne de date dans les deux tables, les deux types sont datetime et ont le classement de SQL_Latin1_General_CP1_CI_AS, le même que le DB.

Le classement du serveur est Latin1_General_CI_AS

Cependant, lorsque je tente d'exécuter une requête comparant les dates entre les tables, je reçois l'erreur:

 Cannot resolve the collation conflict between 
     "Latin1_General_CI_AS" and 
     "SQL_Latin1_General_CP1_CI_AS" in the 
     equal to operation. 

J'ai essayé avec et sans l'option COLLATE, en utilisant les deux paramètres de classement.

Ma requête est:

select * , hxl.holiday_dt, 
datediff(d, h.holiday_dt collate SQL_Latin1_General_CP1_CI_AS, 
      hxl.holiday_dt collate SQL_Latin1_General_CP1_CI_AS) 
from holiday h, Holiday_XL hxl 
where h.currency_cd=hxl.currency_cd 

En fait, toute requête impliquant les deux tableaux donne exactement la même erreur de classement, par exemple celui-ci:

select count(*) 
from Holiday_XL c 
where c.currency_cd in (select distinct h.currency_cd from holiday h) 

Merci à l'avance de toute réflexion.

Cordialement, Chris

Répondre

5

L'erreur est signalé sur la comparaison des devises h.currency_cd = hxl.currency_cd, pas datediff, essayez donc de collation force sur les monnaies.

Le classement n'est pertinent que pour les types de caractères (char, varchar, nvarchar) et les types de texte.

+0

Cela semble l'avoir fait - merci vm. –

0

Sous le classement et de donner le niveau de table de collation il y a beaucoup de conseils et de code disponible dans la recherche de réseau avec sujet de collation.

Toujours si vous avez un problème. Insérez le contenu de l'excel dans la table @table ou permenant et fournir Collation à cette table lors de la sélection pour la comparaison