Bonjourà tous,

J'ai le problème suivant lorsque, dans une transaction distribuée, je tente de filtrer sur une colonne de type DATETIME :

Serveur : Msg 242, Niveau 16, État 3, Ligne 1
La conversion d'un type de données CHAR en type DATETIME a donné une valeur hors des limites des valeurs de date et d'heure.
Le problème survient lorsque la valeur servant de filtre est fixée dans la requête ; en effet, lorsque je prend soin de declarer une variable DATETIME et que je place celle ci dans ma requête alors elle s'execute sans problème !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
SELECT monChamp 
FROM monServeur.maDb.dbo.Ma Table 
WHERE monChampDate='20070731'
Retourne l'erreur 242

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
DECLARE @maDate DATETIME
SET @maDate='20070731'
 
SELECT monChamp 
FROM monServeur.maDb.dbo.Ma Table 
WHERE monChampDate=@maDate
Retourne la/les ligne(s)

Si j'en crois le papier de Karaszi, le format YYYYMMDD est censé être indépendant du langage. Par acquis de conscience j'ai quand même verifié les collations sur les serveurs, db ainsi que celles utilisées par la connexion des serveurs liés mais tout semble cohérent.

Vous avez une idée des causes de ce comportement ?

Merci !