2016-04-12 42 views
0

我只有通過他們的日期部分(月 - 年),以兩個記錄比較,比較兩個日期時間型(「MMMM-YYYY)

我用來比較

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

在例如

  • MonthAndYear也MMMM-YYYY型

  • 的StartDate爲4月2013,

  • 和CustomEndDate是2016年4月。

    僅返回2013年4月,2014年4月,2015年4月。我想要在該範圍內獲得所有月份。

+0

如果這種查詢經常運行並且需要高性能,那麼考慮將日期分解到其組件字段是理由。 _最好通過具有計算列的索引視圖._ –

回答

0

首先,你需要你的MonthAndYear轉換爲datetime,然後比較 像:

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 Function](https://technet.microsoft.com/en-us/library/ms173998%28v=sql.110%29 .aspx) –

+0

謝謝@Alexej,我會盡力。 –