2016-04-12 6 views
0

Я должен сравнить две записи только ихние части Дата (месяц-год),Сравните два типа Datetime ("MMMM-гггг) в SQL Server CE

Я использовал для сравнения

WHERE MonthAndYear >= '" + StartDate + "' AND MonthAndYear <= '" + CustomEndDate + "' 

В пример

  • MonthAndYear также тип MMMM-гггг

  • StartDate является апрель-2013,

  • и CustomEndDate - апрель-2016 год.

    Он возвращается только Апрель-2013, Апрель-2014, Апрель-2015. Я хочу получить весь месячный год в диапазоне.

+0

Если такой запрос выполняется часто и должен быть выполнен, это является основанием для рассмотрения вопроса о разделении даты на свои поля компонентов. _ Возможно, с помощью индексированного представления с вычисленными столбцами. –

ответ

0

Прежде всего, необходимо преобразовать MonthAndYear в дату, а затем сравнить как:

WHERE CAST('01-'+MonthAndYear AS DATETIME) >= @StartDate AND DATEADD(mm, 1, CAST('01-'+ MonthAndYear AS DATETIME))-1 <= @CustomEndDate

0

Вы можете попробовать маленькую хитрость:

WHERE YEAR(MonthAndYear)>=YEAR('" + StartDate + "') AND MONTH(MonthAndYear)>=MONTH('" + StartDate + "') 
AND YEAR(MonthAndYear)<=YEAR('" + CustomEndDate + "') AND MONTH(MonthAndYear)<=MONTH('" + CustomEndDate + "') 

UPDATE: или использовать DATEPART функция, если YEAR и MONTH недоступны в SQL CE

+0

Но в SQL CE мы не можем запускать запросы этого типа. Подобно YEAR(), Month() –

+0

В этом случае вы можете заменить YEAR и MONTH на [Функция DATEPART] (https://technet.microsoft.com/en-us/library/ms173998%28v=sql.110%29 .aspx) –

+0

Спасибо @Alexej, я постараюсь. –

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

  • Нет связанных вопросов^_^