将表列中的日期与 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
日期列表在两个特定日期之间生成,具有恒定的天间隔
询问:
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
如您所见,生成的日期列表与上面的工资表匹配。但是,当比较完成时,它会重新发送零个记录。
比较查询:
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 Server 和 Oracle 中对此进行测试。
有许多很好的问题和答案来支持在站点的各种情况下发生的“日期比较”问题。这包括诸如mysql date comparison with date_format 之类的帖子。等等。可能有一个隐藏的地方要求我用不同的措辞询问我面临的确切问题。找不到,因此发布了这个问题。