A series of dates
with a specified interval
can be generated using a variable
and a static date
as per the linked question that I asked earlier. However when there's a where
clause to produce a start date, the dates generation
seems to stop and only shows the first interval date. I also checked other posts, those that I found e.g. 1, e.g. 2, e.g. 3 are shown with a static date
or using CTE.. I am looking for a solution without storedprocedures/functions
...
This works:
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')
;
These don't:
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
;
Expected Results:
Be the same as the first query results given it starts generating dates with stDate
of mmid=100
.
Preferably in ANSI SQL
so it can be supported in MYSQL, SQL Server/MS Access SQL
as Oracle
has trunc
and rownum
given per this query with 14 votes and PostGres
has generatge_Series
function. I would like to know if this is a bug or a limitation in MYSQL
?
PS: I have asked a similar quetion before. It was based on static date values
where as this one is based on a date value from a table column based on a condition.