sqlの質問です。


where条件の値を動的に指定したいです。

具体的には、現在8月~来年の7月までであれば、WhereのSQLが「受付日<2013年8月1日」となり
来年の8月~再来年の7月であれば、WhereのSQLが「受付日<2014年8月1日」となるような動的に
かわるWhereの条件をつくるにはどうしたらよいでしょうか。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/08/24 18:54:18
  • 終了:2013/08/24 20:42:00
id:yayayai

RDBMSはとりあえずAccessでできると助かります。。
が、Accessがという場合は、oracleやmysql、postgresでも読みかえますのでOKです。
受付日は日付型になります。

ベストアンサー

id:windofjuly No.2

うぃんど回答回数2625ベストアンサー獲得回数11492013/08/24 20:00:40

ポイント100pt

Access用

SELECT *
FROM テーブル
WHERE 受付日 < DateSerial( Year(Now()) - IIF(Month(Now())<8, 1, 0), 8, 1)

現在日が8月以前なら年から1を引いて前年8月1日という式にしてあります。

DateSerialは年,月,日の数値データを日付型に直す関数です。
Nowは現在日時
YearとMonthはそれぞれ年と月の抽出
IIFは条件分岐

id:yayayai

即レスありがとうございました!!
ナットクです~

2013/08/24 21:29:52

その他の回答(1件)

id:dawakaki No.1

だわかき回答回数797ベストアンサー獲得回数1222013/08/24 19:29:44

多くのRDBMSには変数が用意されているので、それを使えばできます。
http://ap.atmarkit.co.jp/bbs/core/fdb/26022

id:yayayai

はいー。ありがとうございましたー!

2013/08/24 21:30:19
id:windofjuly No.2

うぃんど回答回数2625ベストアンサー獲得回数11492013/08/24 20:00:40ここでベストアンサー

ポイント100pt

Access用

SELECT *
FROM テーブル
WHERE 受付日 < DateSerial( Year(Now()) - IIF(Month(Now())<8, 1, 0), 8, 1)

現在日が8月以前なら年から1を引いて前年8月1日という式にしてあります。

DateSerialは年,月,日の数値データを日付型に直す関数です。
Nowは現在日時
YearとMonthはそれぞれ年と月の抽出
IIFは条件分岐

id:yayayai

即レスありがとうございました!!
ナットクです~

2013/08/24 21:29:52

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません