2013-05-22 5 views
3

En package SSIS Je String type variable V2 dans la propriété d'expression j'écris suivant requête SQLexpression ssis comment convertir une déclaration SQL datetime?

"select * from mytable where date = " + @[System::StartTime]

Mais il me donne une erreur:

The data types "DT_WSTR" and "DT_DATE" are incompatible for binary operator "+". The operand types could not be implicitly cast into compatible types for the operation. To perform this operation, one or both operands need to be explicitly cast with a cast operator. 

Attempt to set the result type of binary operation ""select * from table where date = " + @[System::StartTime]" failed with error code 0xC0047080. 

Même moi, je l'ai également essayé avec (DT_WSTR) @[System::StartTime] toujours pas de chance, un conseil?

Répondre

3

Vous devez modifier le type de données de la variable StartTime et du champ [date] de la requête à la chaîne. Essayez ceci:

"select * from mytable where convert(varchar(10), [date], 120) = '" + SUBSTRING((DT_WSTR,50)@[System::StartTime],1, 10) + "'" 

qui doit retourner une requête appropriée:

select * from mytable where convert(varchar(10), [date], 120) = '2013-05-22' 

convert() vous donnera chaîne comme "22/05/2013". Dans mon système (DT_WSTR) la conversion @[System::StartTime] renvoie la chaîne "2013-05-22 16:14:43", mais si vous avez d'autres paramètres, vous devez construire la chaîne à partir de dateparts, si votre résultat par défaut est exemple "22/05/2013 16:14:43" en raison d'autres paramètres régionaux.

Quelle est la version du serveur sql que vous utilisez? et [date] tapez le type exactement?