-4
コードの試行が不十分であることをご了承ください。MySQLのクエリの日付範囲 - 一般的な期間を見つける
私はこの周りに頭を上げることはできません - それが実現可能かどうかわかりません。
私は '日付スロット'でいっぱいのテーブルを持っています。これらは個人によって予約することができます。
タイムスロットテーブルは次のようになります。これらの行の
ID | Price | Available_from | Available_ to
------------------------------------
1 | 20.00 | 2017-10-01 | 2018-01-01
2 | 20.00 | 2017-11-01 | 2017-12-07
3 | 20.00 | 2017-10-31 | 2018-01-31
4 | 20.00 | 2017-10-22 | 2017-11-21
------------------------------------
、4つのすべての結果は、2017年11月1日> 2017年11月21日
入手可能である一般的な日付範囲がありますデータベースを照会して1)すべての結果に共通の範囲があり、2)ある場合は日付範囲を取得するかどうかを確認したいと思います。
助けてください!
SELECT MAX(Available_from) as MatchFrom,
MIN(Available_to) as MatchTo
FROM Temporary.test
WHERE
(SELECT MAX(Available_from) FROM Temporary.test)
<=(SELECT MIN(Available_to) FROM Temporary.test)
重複範囲が存在しない場合には、NULLを返します。
は、私はこれが仕事だと思うあなた
あなた自身のサンプルデータを見るだけであれば、希望の結果が最大Available_from日付と使用可能な最小Available_から構成されていることが明らかになります。 (それらを得るためには、基本アイデアのために "mysql groupwise maximum"を調べてください。)もちろん、既存の間隔に「穴」があるかもしれませんが、それほど単純ではありません。ケース。ですから、あなたの次のステップは、この状況における「エッジケース」がどのようなものになるのか、それらが必要とする具体的な取り扱いについて考えることです。 – CBroe
http://salman-w.blogspot.ca/2012/06/sql-query-overlapping-date-ranges.htmlをご覧ください。また、SQLの日付範囲の交差のためのStackOverflowを調べると、いくつかの詳細な回答が見つかります。 Ex https://stackoverflow.com/questions/4490553/detect-overlapping-date-ranges-from-the-same-table – Nic3500
ありがとう@CBroe、そのようにレイアウトし、いくつかの正気を追加しました - はい、それは遠くに思われる簡単です!ありがとう、私は今それを探検します。 – user3061608