根据我之前提出的链接问题,可以使用 a和 a生成series of dates
具有指定的 A。interval
variable
static date
但是,当有一个where
生成开始日期的子句时,dates generation
似乎停止并且只显示第一个间隔日期。我还检查了其他帖子,我发现的那些帖子,例如 1,例如 2,例如 3用 astatic date
或使用 CTE 显示。我正在寻找一个没有 storedprocedures/functions
...的解决方案
这有效:
SELECT DATE(DATE_ADD('2012-01-12',
INTERVAL @i:=@i+30 DAY) ) AS dateO
FROM members, (SELECT @i:=0) r
where @i < DATEDIFF(now(), date '2012-01-12')
;
这些不会:
SELECT DATE_ADD(date '2012-01-12',
INTERVAL @j:=@j+30 DAY) AS dateO, @j
FROM `members`, (SELECT @j:=0) s
where @j <= DATEDIFF(now(), date '2012-01-12')
and mmid = 100
;
SELECT DATE_ADD(stdate,
INTERVAL @k:=@k+30 DAY) AS dateO, @k
FROM `members`, (SELECT @k:=0) t
where @k <= DATEDIFF(now(), stdate)
and mmid = 100
;
预期成绩:
与第一个查询结果相同,因为它开始生成带有stDate
of 的日期mmid=100
。
最好这样,ANSI SQL
它可以按此查询得到支持,并获得 14MYSQL, SQL Server/MS Access SQL
票Oracle
并trunc
具有rownum
PostGres
功能generatge_Series
。我想知道这是错误还是限制MYSQL
?
PS:我之前也问过类似的问题。它是基于static date values
where 是基于一个基于条件的表列中的日期值。