Ошибка сравнения дат в запросе SQL - PullRequest
0 голосов
/ 31 января 2010

В классе ASP.NET/C# я пытаюсь выполнить запрос, в котором я сравниваю даты:

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

В основном я пытаюсь выбрать строки за последние 500 дней.

Проблема в том, что я получаю следующую ошибку: Синтаксическая ошибка преобразования даты и времени из символьной строки.

Пример поля CreatedDate в базе данных: 2003-09-19 15:32:23.283. Поле имеет тип type = datetime, default = getdate ().

Если я выполню запрос SELECT DATEADD(d,-500,GETDATE()); возвращается 2008-09-17 23: 41: 34.710

2 значения выглядят одинаково, поэтому я удивлен, получаю сообщение об ошибке. Идея о том, как мне нужно изменить свой запрос?

Ответы [ 4 ]

2 голосов
/ 31 января 2010
select * from table1 CreatedDate >= DATEADD(d,-500,GETDATE())

Потерять кавычки вокруг DATEADD(d,-500,GETDATE()). Это делает выражение varchar

Приоритет типа данных означает, что вы пытаетесь преобразовать строку, начинающуюся с DATEADD, в datetime ...

0 голосов
/ 31 января 2010

просто удалите '' цитаты

0 голосов
/ 31 января 2010

Вы поместили апострофы вокруг выражения dateadd, поэтому это не выражение, а строка. Это строка, которую не удается преобразовать в значение datetime.

select * from table1 CreatedDate >= DATEADD(d,-500,GETDATE());
0 голосов
/ 31 января 2010

вы пробовали без одинарных кавычек?

CreatedDate >=DATEADD(d,-500,GETDATE())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...