CREATE CURSOR junk(date t,sno n(3)) SET DATE YMD SET CENTURY on INSERT INTO junk values({^2019-01-01 01:11:28.000},0) INSERT INTO junk values({^2019-01-01 03:21:23.000},0) INSERT INTO junk values({^2019-01-02 05:31:22.000},0) INSERT INTO junk values({^2019-01-02 15:41:27.000},0) INSERT INTO junk values({^2019-01-04 17:51:29.000},0) INSERT INTO junk values({^2019-01-04 21:51:19.000},0) INSERT INTO junk values({^2019-01-05 02:31:36.000},0) INSERT INTO junk values({^2019-01-08 05:21:48.000},0) INSERT INTO junk values({^2019-01-08 00:31:59.000},0) INSERT INTO junk values({^2019-01-08 18:41:35.000},0) INSERT INTO junk values({^2019-01-09 10:11:11.000},0) Browse Local ix Local array laBoundaries[1] Select Min(date), Max(date) from junk into array laBoundaries Create Cursor allDates (d d) For ix=1 to Cast(laBoundaries[2] as date) - Cast(laBoundaries[1] as date) Insert into allDates (d) VALUES (Cast(laBoundaries[1] as Date) + m.ix) EndFor Select * from allDates ; where d not in (select Cast(date as date) from junk)