sql server 指定查询日期范围 如果没数据的当天数据为空而不是没有查询结果怎么做

图片说明

比如有这样一张表

select * from A where Date BETWEEN '2019-01-01' and '2019-01-03' order by date

查询出来的是
图片说明

如果我希望是下面这种结果的话 应该如何写sql

图片说明

SELECT
            convert(char(10), DATEADD(dd,number,'2017-06-13'),120) AS yyyymmdd
        FROM
            master..spt_values
left join tableA on convert(char(10), DATEADD(dd,number,'2017-06-13'),120) AS yyyymmdd=tableA.date
        WHERE
            type = 'p'
        AND DATEDIFF(MI,DATEADD(dd,number,'2017-06-13'),'2017-06-17') > 0

## mysql独有:处理空值 ifnull(字段, 值) ;SqlServer中使用:isnull()

select Date,isnull(Cnt,null) from A where Date BETWEEN '2019-01-01' and '2019-01-03' order by date asc

isnull(Cnt,null) 表示 Cnt为null吗?为null 就变为null,若不为空就不变
不一定对,但应该有帮助,或者能为解决你的问题提供思路 记得点赞!!!

SELECT
a.dt AS '时间',
ISNULL(b.ProductId, '0') AS '数据'
 FROM
   ( SELECT
        CONVERT(date, dateadd(d, number, '2019-04-01')) dt
    FROM
        master..spt_values
WHERE
        type = 'p'
    AND dateadd(d, number, '2019-04-01') <= '2019-04-10'
) a
LEFT JOIN [order] b ON a.dt = b.adddate

图片说明
图片说明

用日期关联不就行了嘛...你再弄个日期表,就一个字段就行了,把你想统计的日期放上,然后用日期左连你那个表,没数据的不就是空值嘛...