2013-05-06 6 views
0

Я написал запрос:Как использовать ИНЕКЕ с DateTime в SQL Server 2008

SELECT * 
FROM w_tbl 
WHERE DID NOT IN (SELECT DId FROM tbl_Assign) 
    AND CAST(MeasDateTime AS Date) = @dta 
ORDER BY 
    CAST(MeasDateTime as DATE) DESC 

Так как вы можете видеть, что я посылаю параметризованным запрос.

Так что я положил 24/09/2010 00:00:00 для @dta

Но я получаю эту ошибку:

Conversion failed when converting date and/or time from charterer string.

Я скажу вам, почему я это делаю, и моя цель:

У меня есть столбец DATETIME, и Я хочу выбрать/выбрать все данные только по дате (т. Е. Я не хочу получать данные по дате времени, это должно быть только по дате)

+0

Вы имеете в виду, что вы устанавливаете значение '@ dta' в строку *? Почему бы не установить его вместо 'DateTime'? –

+0

Я подозреваю, что MeasDateTime может иметь недопустимое значение. Каков тип этого столбца? –

+0

@JonSkeet Мое поле в БД также datetime, его не строка .... –

ответ

0

Если вы хотите выбрать по дате только и у вас есть тип DateTime, использовать дату функции:

DATEADD (dd , 0 , DATEDIFF (dd , 0 , @dta)) 

Так что в вашем случае:

SELECT * 
FROM w_tbl 
WHERE DID NOT IN (SELECT DId FROM tbl_Assign) 
    AND DATEADD (dd , 0 , DATEDIFF (dd , 0 , MeasDateTime)) = DATEADD (dd , 0 , DATEDIFF (dd , 0 , @dta)) 
ORDER BY 
    MeasDateTime DESC -- No need for CAST/CONVERT here, it will be ok either way 
-1

Сначала проверьте значение @dta причина 24/09/2010 может быть неправильная дата. Попробуйте использовать 09/24/2010 или 24 сентября 2010 года и проверьте. Всегда до avoid confusion in dd/MM/yyyy and MM/dd/yyyy используйте MMM за месяц. SQL корректно обрабатывает формат даты и времени. Как dd-MMM-yyyy. По умолчанию SQL использует стандарты США, а дата даты - формат MM/dd/yyyy.

Спасибо.

+0

Единственный формат, который SQL Server интерпретирует последовательно: 'YYYYMMDD'; это [задокументировано] (http://msdn.microsoft.com/en-us/library/ms187819.aspx) и использование других форматов для литералов даты рано или поздно сломается из-за настроек локали. – Pondlife

+0

@Pondlife. Благодарим за обновление документации. Но для вышеупомянутого вопроса Jitendra запуталась в форматах даты dd/MM/yyyy и MM/dd/yyyy, что было его фактической проблемой, которую я хочу выделить Jitendra и другие, используя форматы локали для кастинга или преобразования. –

Смежные вопросы