テーブル列の日付を MYSQL 内のリストで生成された日付と比較すると、奇妙な動作が発生するようです。
* SQLFIDDLEリファレンスを参照してください。
給与表:
ID DATESTAMP
1 August, 30 2012 00:00:00+0000
2 September, 02 2012 00:00:00+0000
3 September, 15 2012 00:00:00+0000
4 September, 24 2012 00:00:00+0000
5 October, 05 2012 00:00:00+0000
6 October, 16 2012 00:00:00+0000
7 October, 19 2012 00:00:00+0000
8 November, 02 2012 00:00:00+0000
9 November, 10 2012 00:00:00+0000
10 November, 16 2012 00:00:00+0000
11 November, 24 2012 00:00:00+0000
12 November, 30 2012 00:00:00+0000
13 December, 01 2012 00:00:00+0000
14 December, 07 2012 00:00:00+0000
日付リストは、一定の日間隔で 2 つの特定の日付の間に生成されます
クエリ:
set @i:= 0;
SELECT date_format(DATE(ADDDATE('2012-10-05',
INTERVAL @i:=@i+14 DAY)),'%Y-%m-%d')
AS dateP, @i
FROM payroll
HAVING @i < datediff(now(), date '2012-10-05')
;
DATEP @IntervalDays
2012-10-19 14
2012-11-02 28
2012-11-16 42
2012-11-30 56
2012-12-14 70
ご覧のとおり、生成された日付リストには、上記の Payroll テーブルと一致するものがあります。ただし、比較が完了すると、ゼロ レコードが返されます。
比較クエリ:
set @i:= 0;
SELECT distinct datestamp FROM payroll
WHERE date(datestamp) in (
SELECT DATE(ADDDATE('2012-10-05',
INTERVAL @i:=@i+14 DAY) ) AS dateP
FROM payroll
where @i < DATEDIFF(now(), date '2012-10-05')
)
;
だから私が持っている質問:
ネストされたクエリとして使用された場合、内側のクエリは日付の生成を停止しますか?
ここで使用している日付比較方法に問題はありますか?
この全体的な失敗の理由は何でしょうか?
Select
手順/機能なしでそれ自体を修正する方法は? :)
PS:
また、これを SQL サーバーと Oracle でテストしようとしています。
サイトのさまざまなシナリオで発生した「日付比較」の問題をサポートするための多くの優れた質問と回答があります。これには、date_format との mysql 日付比較などの投稿が含まれます。など.. 私が直面している正確な問題を別の言い回しで尋ねているものがどこかに隠されている可能性があります。見つからなかったため、質問を投稿しました。