2016-01-19 1 views
-6

Вот мой код:Как получить данные между двумя датами

SELECT * 
FROM tbl_mainTable 
WHERE date_issue BETWEEN '1/1/2016' AND DATEADD(s, -1, DATEADD(d, 1, '1/20/2016')) 

но он отображает записи из 1/5/2015 до 1/18/2016

Я надеюсь, что кто-то может помочь мне с этим вид проблемы. Я что-то пропустил в своем коде?

+0

Если 'date_issue' является varchar, тогда у вас есть проблема. '' 1/5 ... "' больше, чем '' 1/1 ... "' – Coderchu

+0

Я думаю, что проблема связана с тем, как даты форматируются. Попробуйте указать даты таким образом вокруг yyyy/mm/dd. –

+0

Но мой формат даты - dd/MM/yyyy? –

ответ

-1

Поскольку date_issue является VARCHAR, это будет проблема с МЕЖДУ.

Попробуйте изменить date_issue тип данных от VARCHAR к DateTime

+0

nope. его варчар. есть ли какая-либо проблема в используемом типе данных? –

+0

@JMYu, это нормально, если вы измените тип данных на datetime и снова запустите запрос? –

+0

Я попытался изменить свой тип данных с varchar на datetime, и он уже работает, мне просто нужно обрезать данные на сегодняшний день только потому, что он также показывает время, подобное этому 2016-01-04 00: 00: 00.000 –

0

Это будет выбрать данные между двумя датами

SELECT * FROM tbl_mainTable WHERE date_issue between '2016/1/1' AND '2016/1/20' 

Вы можете использовать CONVERT() function для настройки формата вам требуется.