In order to return those "missing" date values in a resultset, we need a rowsource that provides them. That is, those values have to come from somewhere; rows don't just spontaneously appear in a query from nowhere.
One solution is to add a "calendar" table that contains the set of date values.
CREATE TABLE `cal` ( `dt` date NOT NULL, PRIMARY KEY (`dt`)) ;
INSERT INTO `cal` (`dt`) VALUES ('2019-02-01'), ('2019-02-02'), ('2019-02-03')
, ('2019-02-04'), ('2019-02-05'), ('2019-02-06')
, ...
Then we can reference the table in a query. We can use an outer join to get matching rows. Where there isn't a matching row, we still get back the date from the calendar table
SELECT c.dt AS dt
, t.mycol AS mycol
FROM cal c
LEFT
JOIN mytable t
ON t.dt = c.dt
WHERE c.dt >= '2019-02-01'
AND c.dt < '2019-02-07'
ORDER
BY c.dt
We don't necessarily need to create a calendar table. Another possibility is to generate the set of dates in an inline view within the query.
But the principle is the same. We need a rowsource that will return the date values when we reference it in the FROM
clause of a query.