私は構造のテーブルを持っています:
+---------+--------------+-----------------+------ ------+-------+------+ | | 週番号 | long_week_no | 週開始日 | 週終了日 | 月 | 月 | 年 | 年 | +---------+--------------+-----------------+------ ------+-------+------+ | | 1 | 1A | 2015 年 1 月 1 日 | 2015 年 3 月 1 日 | 1月 | 2015年 | | | 1 | 1B | 2015 年 4 月 1 日 | 2015 年 10 月 1 日 | 1月 | 2015年 | | | 2 | 2 | 11/01/2015 | 17/01/2015 | 1月 | 2015年 | | | 3 | 3 | 18/01/2015 | 24/01/2015 | 1月 | 2015年 | | | .. | .. | .. | .. | .. | .. | | | 51 | 51 | 2014 年 12 月 14 日 | 2015 年 12 月 20 日 | 12月 | 2014年 | +---------+--------------+-----------------+------ ------+-------+------+
次のステートメントを実行すると:
SELECT *
FROM loy_period
WHERE To_date('15/04/2015', 'DD/MM/YYYY') BETWEEN
To_date(week_start_date, 'DD/MM/YYYY') AND
To_date(week_end_date, 'DD/MM/YYYY');
と
SELECT *
FROM loy_period
WHERE To_date('15/04/2015', 'DD/MM/YYYY') BETWEEN
week_start_date AND
week_end_date;
以下を返します。
+---------+--------------+-----------------+------ ------+-------+------+ | | 週番号 | long_week_no | 週開始日 | 週終了日 | 月 | 月 | 年 | 年 | +---------+--------------+-----------------+------ ------+-------+------+ | | 51 | 51 | 2014 年 12 月 14 日 | 2015 年 12 月 20 日 | 12月 | 2014年 | | | 1 | 1A | 2015 年 1 月 1 日 | 2015 年 3 月 1 日 | 1月 | 2015年 | +---------+--------------+-----------------+------ ------+-------+------+
そして、任意の日付で実行すると、week_no 51 レコードに加えて正しい期間が返されます!
なぜこれが起こっているのか混乱しています。列week_start_date
とweek_end_date
タイプの両方date
。
Fiddleは期待どおりに動作します。