2016-04-04 2 views
0

У меня возникли проблемы с получением дат, отображаемых в моем запросе, когда я изменил даты в моей переменной, ниже - это то, что я объявил.Данные SQL, не отображающие данные для определенных диапазонов дат

declare @record int; 
declare @start_date date; 
declare @end_date date; 

set @record = 2; 
set @start_date = '2016-03-01'; 
set @end_date =  '2016-03-31'; 

То, что я создал, это временные таблицы, которые заполняют мои данные диапазонами дат. Даты не устанавливаются, как показано ниже

- Daily 2016-01-15 
- weekly 2016-51 
- Monthly 2016-04 
- Quarterly 2016-01 
- Yearly 2016 

Итак, когда я объявляю вышеуказанные даты и фильтр раз в год я должен получить данные обратно, на самом деле, независимо от того, какую дату я ставлю в течение ежегодно я должен получить результаты, но ничего не показывает вверх.

Когда я объявляю дату начала = 2016-01-01, он возвращает данные для всех фильтров.

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

+0

Вы можете показать остальную часть вашего запроса ? Как вы используете 'Yearly' в вашем' where'/'join' или любом параметре фильтрации, который у вас есть? – HoneyBadger

+0

Если вы не показываете остальную часть скрипта, как мы можем помочь? – alessalessio

+0

Я удалил тег mySql на основе тега tSql. Пожалуйста, используйте только соответствующие теги. –

ответ

0

Я не знаю, что ваш запрос, который не работает, но основная isead sould быть такими:

select * from YourTempTable where datepart (yy, DateField) = datepart(yy, @start_date) 

, конечно, это не является оптимальным для больших таблиц, поскольку он не будет использовать какие-либо индекс.

Лучше бы построить @DateFrom и @DateTo переменных на основе периода вы ищете и ссылочные даты, описанные выше, и сделать свой выбор соответственно:

select * from YourTempTable where DateField between = @DateFrom and @DateTo 
Смежные вопросы