1

私はこのようなmysqlテーブルを持っています:

   | ID | ID_period | date_start |  date_end  |
   | 1  |   1       | 0000-07-01 | 0000-08-31 |
   | 2  |   2       | 0000-09-01 | 0000-10-30 |
   | 3  |   3       | 0000-11-01 | 0000-12-28 |
   | 4  |   4       | 0000-11-01 | 0000-03-31 |

この期間0000/07/14-0000/08/25の間に含まれるIDを選択するにはどうすればよいですか?

date_start列とdate_end列はDATE形式です。

問題は、0000-12-12から0000-01-25までの期間(含まれ、交差する)を検索すると、選択から0レコードを取得することです。これは、「0000」である年を推測します。 。どうすれば修正できますか?

もう1つの問題は、11-01から12-31のような期間を検索すると、結果が0になることです。date_endの12月の最終日は28ですが、11-01から12-31の期間を検索すると、すべてのレコードを含めたいので、id=3とid=4のレコードを取得したいと思います。

現時点では、次のクエリを使用しています。

SELECT ... WHERE '12' BETWEEN MONTH(date_start) and MONTH(date_end)
AND '15' BETWEEN DAY(date_start) and DAY(date_end)
AND '03' BETWEEN MONTH(date_start) and MONTH(date_end)
AND '28' BETWEEN DAY(date_start) and DAY(date_end)
4

1 に答える 1

4
SELECT  *
FROM    mytable
WHERE   date_start BETWEEN '0000-07-14' AND '0000-08-25'
        OR date_end BETWEEN '0000-07-14' AND '0000-08-25'
        OR (date_start<'0000-07-14' AND date_end>'0000-08-25')
于 2012-12-04T15:04:17.027 に答える