月間のデータを選択したい。例:@month = 4
次に15-03
から15-05
までのデータ。それはうまく見えるです。SQL Serverのデータ範囲から前後のデータを選択する方法は?
Wood 25-03-1990
Mary 10-04-1988
Brown 25-04-1989
White 10-05-1992
しかし、私は見つからない@month = 1
または@month = 12
、データを試してみてください。これはデータであり、コード
NAME BIRTHDAY
John 10-11-1988
Green 25-11-1990
Black 25-12-1989
Blue 10-12-1991
Red 10-01-1992
Candy 25-01-1989
Food 10-02-1993
Apple 25-02-1988
Wood 25-03-1990
Meat 10-03-1991
Mary 10-04-1988
Brown 25-04-1989
White 10-05-1992
Yellow 25-05-1993
そしてSQL-T
日時は、物事が容易になりますがこれはどうだろうと列を持つSELECT * FROM ABC
WHERE
CONVERT(DATE,CONVERT(VARCHAR(2),DATEPART(DAY,CONVERT(DATE,BIRTHDAY,105)))+'-'+
CONVERT(VARCHAR(2), DATEPART(MONTH,CONVERT(DATE,BIRTHDAY,105)))+'-'+
CONVERT(VARCHAR(4),YEAR(GETDATE())),105)
BETWEEN
CONVERT(DATE,'15'+'-'+CONVERT(VARCHAR(2),
--CASE
-- WHEN @month = 1 THEN '12'
-- WHEN @month = 12 THEN '11'
-- WHEN @month <> 1 AND @month <> 12 THEN @month-1
--END
@month-1
)+'-'+CONVERT(VARCHAR(4),YEAR(GETDATE())),105)
AND
CONVERT(DATE,'15'+'-'+CONVERT(VARCHAR(2),
--CASE
-- WHEN @month = 1 THEN '2'
-- WHEN @month = 12 THEN '1'
-- WHEN @month <> 1 AND @month <> 12 THEN @month+1
--END
@month+1
)+'-'+CONVERT(VARCHAR(4),YEAR(GETDATE())),105)
あなたがコメントアウトしたコードは近いです。しかし、あなたは12月に戻るか、1月に進む時は年を変えません。どのバージョンのSQLを使用していますか?あなたはDATEADDとDATEFROMPARTSを使って何か良いことをすることができますか?あなたが私にあなたが完全な答えを与えることができるSQLのバージョンを教えてください。 – OldBoyCoder
私はSQL Server 2008 Expressを使用しています。 –
また、あなたのテーブルにはどのデータ型がBIRTHDAYですか、それは日付かvarcharですか? – OldBoyCoder