MySQL填充空日期值

时间:2012-11-20 11:42:21

标签: date return zero

我正在为我们的个人客户针对我们的事件记录数据库运行一些查询。我想要返回的是2012年的所有月份名称以及有多少次公开事件。对于与我们在一起超过12个月的客户而言,此项工作正常,但对于与我们合作的客户而言,这种情况较短。

我的查询是:

    SELECT DATE_FORMAT(FROM_UNIXTIME(createdtime/1000), '%Y') as 'Year',
    DATE_FORMAT(FROM_UNIXTIME(createdtime/1000), '%M') as 'Month',
    count(wo.workorderid) as 'Total Logged'
    FROM workorder_threaded wot
    inner join workorder wo
    on wo.workorderid = wot.workorderid
    and wo.siteid = 4806
    and DATE_FORMAT(FROM_UNIXTIME(createdtime/1000), '%Y') <> '2011'
    where wot.workorderid = wot.thd_woid
    GROUP BY DATE_FORMAT(FROM_UNIXTIME(createdtime/1000), '%Y%m')

我得到的输出是:

    Year    Month       Total Logged
    2012    August      3
    2012    September   356
    2012    October     212
    2012    November    120

但我需要以下内容:

    Year      Month       Total Logged
    2012      January     0 
    2012      February    0
    2012      March       0
    2012      April       0
    2012      May         0
    2012      June        0
    2012      July        0 
    2012      August      3
    2012      September   356
    2012      October     212
    2012      November    120
    2012      December    0

它不必受年限制,即呼叫记录DB在2011年具有此数据,因此可以修改查询以过滤年份范围。

我知道这不是填充因为数据不存在而且我已经看到了创建数字\日期表的方法并引用它来填充日期但我正在努力做到这一点。我也改变了连接和条件无济于事。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您需要在此使用LEFT JOIN