2010-01-31 9 views
0

Dans une classe ASP.NET/C# Je suis en train d'exécuter une requête où je compare les dates:erreur comparant les dates dans la requête SQL

select * from table1 CreatedDate >='DATEADD(d,-500,GETDATE())'; 

Fondamentalement, je suis en train de sélectionner des lignes des 500 derniers jours.

Le problème est que j'obtiens l'erreur suivante: Erreur de syntaxe convertissant datetime à partir de chaîne de caractères. Un exemple du champ CreatedDate dans la base de données est 2003-09-19 15:32:23.283. Le champ est défini sur type = datetime, default = getdate().

Si j'exécute la requête SELECT DATEADD(d,-500,GETDATE()); il retourne 2008-09-17 23: 41: 34.710

Les 2 valeurs se ressemblent donc je suis surpris d'obtenir le message d'erreur. Une idée sur comment j'ai besoin de modifier ma requête?

Répondre

2
select * from table1 CreatedDate >= DATEADD(d,-500,GETDATE()) 

Perdez les guillemets autour de DATEADD(d,-500,GETDATE()). Ceux-ci font l'expression varchar

Datatype precedence signifie que vous essayez de convertir une chaîne à partir DATEADD datetime ...

+1

Doh! C'était une solution facile. Merci. – itsatrp

0

vous avez essayé sans les guillemets simples?

CreatedDate >=DATEADD(d,-500,GETDATE()) 
0

Vous avez placé des apostrophes autour de l'expression dateadd, donc ce n'est pas une expression, c'est une chaîne. C'est la chaîne qu'il ne parvient pas à convertir en une valeur datetime.

select * from table1 CreatedDate >= DATEADD(d,-500,GETDATE()); 
0

supprimer tout '' cite