2013-10-03 3 views
1

Мы только что обновили до SQL Server 2012 с 2005 года. Хотя я новичок, что-то такое простое не могло быть так сложно. Раньше я мог извлекать данные из таблицы на основе даты и даты и времени. В настоящее время у меня есть:Поиск по дате в SQL Server 2012

Select * from receipts_table where receipt_cancel_date = '2013-09-20' 

Перед тем, как мы обновили, это будет работать нормально. Как я могу запустить это и получить желаемые результаты, поскольку я знаю, что есть квитанции с датой отмены 2013-09-20.

Thanx

+0

Вы ожидали все записи, попадающие на дату '2013-09-20'? Независимо от части времени? – Khan

+0

Каков ожидаемый результат? – Khan

ответ

1

Если вы передаете строку для параметра даты, лучший формат является форматом ISO (yyyymmdd). В противном случае, даже если ваша строка работает на некоторых серверах, она может не работать в другой, в зависимости от культуры сервера. ISO format is culture independent.

Также удалите временную часть из столбца receipt_cancel_date, переведя его в DATE (если DATETIME) для целей сравнения.

Попробуйте это:

Select * from receipts_table 
where convert(date, receipt_cancel_date) = convert(date,'20130920') 

Или использовать 120 стиль с форматом:

Select * from receipts_table 
where convert(date, receipt_cancel_date) = convert(date,'2013-09-20',120) 
+1

Сработало Thankx. –

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