2016-04-17 5 views
1

私はテーブル内のすべての年の2つの日付(月と日)の間に位置するレコードを取得しようとします。 私のテーブルには、50年間のレコードが含まれています。私は1年のためにこれを行うことができますテーブル内のすべての年の2つの日付(月と日)の間にあるレコードを取得する方法は?

SELECT* 
FROM mytable 
WHERE "Date" BETWEEN {D '1700-05-01'} AND {D '1700-07-31'}; 
+1

これはどのRDBMSですか? 'mysql'、' postgresql'、 'sql-server'、' oracle'、 'db2'のどれかを指定するタグを追加してください。 –

+0

私はMsアクセスに接続されたLibreoffice Baseを使用しています...だから私は標準SQLを使用します。 – Wilcar

答えて

2

SELECT * 
FROM mytable 
WHERE EXTRACT (month FROM "Date") BETWEEN 5 AND 7 
AND EXTRACT (day FROM "Date") BETWEEN 1 AND 31; 

あなたのRDBMSに応じて、簡単に答えがあるかもしれません。 日付フィールドの名前を"Date"以外の名前にすることを検討してください。通常は予約済みのキーワードです。

編集:MS Accessでは、代わりにEXTRACTの、DatePart機能を使用します。あなたが望む唯一のことは、あなたは忘れることができます「すべての年のすべての月の月」である場合

DatePart("m", "Date") 
DatePart("d", "Date") 

を」この回答の一部を抽出し、1か月に抽出するだけです。

編集:それを知っている18世紀

SELECT * 
FROM mytable 
WHERE EXTRACT (year FROM "Date") BETWEEN 1701 AND 1750 
AND EXTRACT (month FROM "Date") = 5; 

オフ最初の50年間に5月中に含ますべてのレコード、MS-Accessで、あなたは、EXTRACT (year FROM "Date")DatePart("yyyy", "Date")あり、そしてEXTRACT (month FROM "Date")DatePart("m", "Date")です今すぐそれを把握できるはずです:)

+0

WHERE句に 'EXTRACT(day FROM" Date ")BETWEEN 1 AND 31'は本当に必要ありませんか? –

+0

実際の例ではありませんが、「5月1日から5月25日」など、他のケースでも動作する必要があります。意図したケースが "7月14日から8月2日"の場合、BETWEENの使用は単純に機能せず、AND/OR句が必要になります。 @Wilcar、 "day"句を追加する必要はなく、 "month"部分を抽出するだけで十分ですが、元の投稿ではありません:) –

+0

月に含まれるすべてのレコードを抽出したいWilcar – Wilcar

0

はい次のことができるようにすべきです。構文は、それに応じて編集する必要があります。そのため、月と日ではなく、必要な年の間だけ行います。あなたが1つの特定の年のためにそれをしたいなら、あなたが望む年の1月1日から12月31日までの日付を指定してください。標準SQLでは

関連する問題