3

データが2010年1月から2012年3月の間にあるように、月と年の範囲で結果が必要なクエリがあります..

誰でも私を助けることができます..私は次のようにしました...:

(DATENAME(MM, c.startdate) >= 'January' and DATEPART(YEAR, c.startdate) >= 2010) and
(DATENAME(MM, c.startdate) <= 'January' and DATEPART(YEAR, c.startdate) <= 2012)

bue はまだ適切な結果を取得していません

事前にサンクス

4

3 に答える 3

2

なぜ使用しないのですか:

SELECT (list of columns)
FROM dbo.YourTable
WHERE c.startDate >= '20100101' AND c.startDate < '20120401'

startDateこれは、2010 年 1 月 1 日から 2012 年 4 月 1 日までの間のすべての行を選択するだけです。

于 2012-07-13T10:38:18.343 に答える
1
Select
    ...
Where Dateadd(dd, datediff(dd, 0, c.startdate),0) between '2012-01-01' and '2012-04-01'

編集: 月と日付が使用している入力であると想定しています。

Declare @month1 varchar(20), @year1 int
  ,@month2 varchar(20), @year2 int
  ,@realmonth1 int, @realmonth2 int
  ,@first int, @input1 datetime, @input2 datetime
Set @month1 = 'January'
Set @year1 = 2010
Set @month2 = 'January'
Set @year2 = 2012
Set @realmonth1 = Case when @month1 = 'January' then '01' when @month1 = 'February' then '02' when @month1 = 'March' then '03' when @month1 = 'April' then '04' when @month1 = 'May' then '05' when @month1 = 'June' then '06' when @month1 = 'July' then '07' when @month1 = 'August' then '08' when @month1 = 'Sepetember' then '09' when @month1 = 'October' then '10' when @month1 = 'November' then '11' when @month1 = 'December' then '12' end
Set @realmonth2 = Case when @month2 = 'January' then '01' when @month2 = 'February' then '02' when @month2 = 'March' then '03' when @month2 = 'April' then '04' when @month2 = 'May' then '05' when @month2 = 'June' then '06' when @month2 = 'July' then '07' when @month2 = 'August' then '08' when @month2 = 'Sepetember' then '09' when @month2 = 'October' then '10' when @month2 = 'November' then '11' when @month2 = 'December' then '12' end
Set @first = 1
Set @input1 = convert(datetime,(convert(nvarchar(4), @year1) + '-' + convert(nvarchar(2), @realmonth1) + '-' + convert(nvarchar(2), @first)))
Set @input2 = convert(datetime,(convert(nvarchar(4), @year2) + '-' + convert(nvarchar(2), @realmonth2) + '-' + convert(nvarchar(2), @first)))

Select
    ...
Where startdate between @input1 and @input2

機能することを示すSql Fiddle、MS SQL Server 2005 でもテスト済み

于 2012-07-13T10:40:28.747 に答える
0

month(c.startdate) >= 1 andを含むステートメントを使用してみてくださいyear(c.startdate) >= 2010。それはあなたにとってより簡単になります

于 2012-07-13T10:40:25.740 に答える