• 締切済み

MYSQLで期間指定の条件式の書き方教えてください

毎週火曜日と木曜日に定期巡回便が出ます。 まとめて前準備しておくお荷物を抽出したいのですが 日付の条件抽出の仕方で教えてください たとえば・・・Excelのワークシート関数だと A1=2016/11/3 とすると A1+CHOOSE(WEEKDAY(A1,1),2,1,0,1,0,4,3),"m/d" から A1+CHOOSE(WEEKDAY(A1,1),3,2,1,5,4,5,4),"m/d" までという数式になります。 上の例だと11/3木に用意しておくのは11/3木から11/7月までの品 というふうに条件指定してみたいのですが これをMYSQLのwhere句側でSQL文で書くと、どうなりますでしょうか? where 指定日 between 条件式1 and 条件式2 の条件式の書き方がわかりません。 どなたか教えていただけますでしょうか?

  • MySQL
  • 回答数1
  • ありがとう数0

みんなの回答

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

もう少し条件を具体的に書かれたほうが回答しやすいです。 > A1=2016/11/3 とすると の「2016/11/3」がテーブルの項目値なのか、項目値ならばDATE型と考えていいのか、それとも現在の日付なのかよく分かりませんでした。 > where 指定日 between 条件式1 and 条件式2 の「指定日」はテーブル項目でDATE型でよろしいでしょうか。 「指定日」と「条件式1」、「条件式2」と関係が今ひとつつかみにくいです。 > A1+CHOOSE(WEEKDAY(A1,1),2,1,0,1,0,4,3),"m/d" > から > A1+CHOOSE(WEEKDAY(A1,1),3,2,1,5,4,5,4),"m/d" もそのままではEXCELのセルに入力できませんでしたし、CHOOSEの中の数列が何を意味しているのかよく分かりませんでした。 出来ればこれで期間が指定できるロジックを教えてください。 MySQLにも「 DAYOFWEEK()」というDATE型から曜日を数値(日=1、月=2,,,)で返す関数があるので要件がはっきりすれば答えが出せるかもしれません。

Passerby01
質問者

補足

textが抜けてましたね 補足しますと・・・ 項目値 a1に日付型 条件式1 =TEXT(A1+CHOOSE(WEEKDAY(A1,1),2,1,0,1,0,4,3),"m/d") WEEKDAY関数,引数1は日曜を0じゃなく1から数えます 1:日曜日 2:月曜日 3:火曜日 4:水曜日 5:木曜日 6:金曜日 7:土曜日 となります 1:日曜日なら+2で火曜日 2:月曜日なら+1で火曜日 3:火曜日なら+0で火曜日 4:水曜日なら+1で木曜日 5:木曜日なら+0で木曜日 6:金曜日なら+4で火曜日 7:土曜日なら+3で火曜日 条件式2 =TEXT(A1+CHOOSE(WEEKDAY(A1,1),3,2,1,5,4,5,4),"m/d") 1:日曜日なら+3で水曜日 2:月曜日なら+2で水曜日 3:火曜日なら+1で水曜日 4:水曜日なら+5で月曜日 5:木曜日なら+4で月曜日 6:金曜日なら+5で水曜日 7:土曜日なら+4で水曜日 先ずはDAYOFWEEK関数を調べてみます。

関連するQ&A

  • ACCESS条件別抽出

    Access2000を使用しております。 クエリより抽出条件を元に値をとってくるということがしたいです。 抽出条件として日付を指定します。 以下はwhere以降で、BETWEENを使用しましたが「日付の構文エラー」とでて、抽出できませんでした。 他の方法はございますか? (2006年10月のものだけ) where (クエリー名.クエリーカラム名) BETWEEN #200610# AND #200610# よろしくお願いします。

  • mysql 正規表現について

    以下のようなテーブルがあるとして +------+ | memo | +------+ | aaaa | | bbbb | | cccc | +------+ 『memoフィールドに「a」もしくは「b」を含まない』という条件式を書きたいのですがうまく行きません… 結果として「cccc」を取得できれば良いのですが… SELECT * FROM test1 WHERE memo REGEXP '!(aa|bb))'; ↑上記のように書いてみると、なにも抽出できず…。 どのようにWHERE句を記述すれば 「a」もしくは「b」を含まない、「cccc」を取得する事ができるのでしょうか? ご回答お待ちしております。

    • ベストアンサー
    • MySQL
  • SQLServerにて複数のデータで条件指定したい

    SQLServer 2008です。 Where 句をつかって Where str like 'A%' ということをしますよね 次に引数を使って WHERE str like @STR として @STR = 'A%' を 渡すことができるところまではわかりました。 では、 'A%','B%' や、 'A%', 'C%', 'D%'のように 複数を指定して処理結果を得るためにどうすればよいのでしょうか? 要するに WHERE str like @STR[] とかのように配列を指定するとか、もしくは別の方法があれば 教えてください。 WHERE str like @STR1 or str like @STR2 : or str like @STRn みたいにして n=100ぐらいにしておけばまず大丈夫だろう・・・ みたいなことするのでしょうか?

  • エクセルのchoose関数について教えてください。

    A2 = #2001/09/01# =CHOOSE(WEEKDAY(A2),"日","月","火","水","木") エラーがでますが、なぜか教えてください。

  • 条件式にtrimを入れたい

    Mysqlでselectする時に、条件で指定した値とDB内のデータをtrim(空白除去)した値が一致したレコードを抽出されるようにしたいのですが・・・ 例えば、 あるテーブルの項目aaaの値が'あ いうえお'だとします。 条件式を where aaa='あいうえお' とした場合でもヒットさせたいのですが、どうすれば良いのでしょうか? aaaの値の空白を除去したものと一致すればいい、という事で select aaa from テーブル where trim(aaa)='あいうえお' ↑このようなイメージなのですが・・・ どなたか簡単なやり方を知っていれば教えて頂けませんでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • なぜ、WHERE句とHAVING句があるのか?

    なぜ、WHERE句とHAVING句があるのか? SQLを学んでいる時に、疑問に思ったことがあります。 それは、「なぜ、WHERE句とHAVING句があるのか?」ということです。 この2つは、 ・WHERE句 → 表から取り出す行の条件を指定 ・GROUP BY句 → グループ化した結果から取り出す行の条件を指定 という違いがあることは分かっています。 ですが、おなじ「行のかたまりに対する抽出条件」を指定しているのに、 なぜ、わざわざ2つに分ける必要があったのでしょうか? 分けないと不都合が生じるのでしょうか。 もし、明瞭簡潔に説明できる方がいらっしゃいましたら、教えていただけないでしょうか。

  • タイムスタンプ型を抽出条件に指定した場合のSQL

    タイムスタンプ型を抽出条件に指定した場合、どの様なSQL文を指定すれば良いでしょうか? 該当するレコードは確かに存在していますが、以下のSQL文では「空」になってしまいました。 【実行したSQL文】 SELECT フィールド FROM テーブル WHERE タムスタンプ型フィールド BETWEEN '2011-08-05 20:00:00' AND '2011-08-06 19:59:59' 何卒、ご教授頂ければと存じます。 宜しくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLで複数条件指定での抽出

    MySQLで複数条件指定での抽出 いつもお世話になりますm(__)m MySQLで複数の条件を指定して、グループ化(合計)した結果を出す方法がわかりません(>_<) たとえば、以下の2つのテーブルがあります。 テーブル:仕入先マスタ 仕入先ID|仕入先名|締日|支払区分|支払日| 0001|あいうえお|20|1|20| 0002|かきくけこ|99|2|99| 0003|さしすせそ|20|2|99| テーブル:仕入テーブル 仕入日|仕入先ID|商品名|仕入金額| 2010/02/10|0001|商品A|10,000| 2010/02/25|0001|商品B|20,000| 2010/02/20|0002|商品C|30,000| 2010/02/25|0002|商品D|40,000| 2010/03/10|0002|商品E|50,000| 2010/03/15|0002|商品F|60,000| 2010/02/12|0003|商品G|70,000| 2010/02/19|0003|商品H|80,000| 2010/03/12|0003|商品I|90,000| 上記から抽出条件として 条件1  仕入テーブルの仕入日:2010/02/01~2010/02/28  仕入先マスタの締日:20 結果1  仕入先ID|仕入先名|仕入金額合計|  0001|あいうえお|30,000|  0003|さしすせそ|160,000| 条件2  仕入テーブルの仕入日:2010/03/01~2010/03/31  仕入先マスタの締日:99 結果2  仕入先ID|仕入先名|仕入金額合計|  0002|かきくけこ|110,000| という結果が出したいのですが、どのようなSELECT文を書けばいいのでしょうか? 非常に汚い書き方で見にくく申し訳ありませんが、お詳しい方、是非ともご教授のほどお願いしますm(__)m

    • ベストアンサー
    • MySQL
  • ユニオンクエリで期間指定抽出のSQL記述について

    いつもお世話になっております。 Access 2007で、「人名集計」テーブルと「資料送付」テーブルがあり、それぞれ、同一のフィールド名でテーブルが作成されております。 これを「発送日」フィールドの昇順で並べ替えながら結合するユニオンクエリを作成しました。 SELECT * FROM 人名集計 UNION ALL SELECT * FROM 資料送付 ORDER BY 発送日; とりあえず、上記のSQLでは動いていますが、このSQLに、 「発送日」の期間を指定して、抽出条件(パラメータ)を加えようとしていますが、うまくいきません。 WHERE句を使って、Between 「最初の日付を入力」 And 「最後の日付を入力」 のような文を SQLの何処にどのように記述すればよいのか、教えてください。 宜しくお願い申し上げます。

  • エクセル2000フィルター抽出条件式について

    フィルター抽出条件がうまく抽出出来ません教えてください。 抽出条件式 別シートで作っている。(Bシート)  巡視日      巡視日 >=2002/05 <=2002/07 条件式の意味 2002年5月以上で2002年7月以下のデータを抽出する。 2002年5月以上のデータは抽出できるが、2002年7月が抽出されない 2002年5月と2002年6月しか出てこない。 データベース(Aシート) C列 巡視日 4月8日 5月11日 5月11日 6月5日 7月4日 7月4日 エクセル操作(データ→フィルター→フィルターオプション設定)で 検索条件範囲を 巡視日      巡視日 >=2002/05 <=2002/07 指定してやるとデータベース(Aシート)のC列の抽出が 2002年5月以上のデータは抽出できるが、2002年7月が抽出されない 2002年5月と2002年6月しか出てこない。 何故でしょうかよろしくお願いします。