Mysql 我如何做';分组依据';当我只想按日期分组的时候?

Mysql 我如何做';分组依据';当我只想按日期分组的时候?,mysql,Mysql,这是一个非常尴尬的标题:) 我需要写一份报告,按日期生成一份拒绝列表。日期存储为datetime字段,并按datetime返回拒绝次数 以下是我的SQL: select ps.date_scheduled, count(*) from payments_schedule ps left join invoices i on i.invoice_id=ps.invoice_id left join orders o on o.order_id=i.order_id where ps.date_sc

这是一个非常尴尬的标题:)

我需要写一份报告,按日期生成一份拒绝列表。日期存储为datetime字段,并按datetime返回拒绝次数

以下是我的SQL:

select ps.date_scheduled, count(*) from payments_schedule ps
left join invoices i on i.invoice_id=ps.invoice_id
left join orders o on o.order_id=i.order_id
where ps.date_scheduled>'2009-06-01 00:00:00'
group by ps.date_scheduled
2009-06-2514:13:041 2009-06-25 14:13:07 1 ……等等

不酷。我想要的是: 2009-06-25 25 2009-06-26 31 等等


我该怎么做?谢谢:)

将查询更改为
选择DATEADD(day,0,DATEDIFF(day,0,ps.date\u scheduled))
。这将仅保留日期时间的日期部分。您还需要使用相同的表达式进行分组


编辑:这是解决SQL Server问题的方法。

将日期时间转换为日期,然后按日期列分组。这是我倾向于使用的方法,尽管我从未对其进行过基准测试。不确定MySQL是否为此使用索引(如果可用),或者是否每次都重新计算每条记录的日期()。如果重新计算,可能会出现一个新列。Quass-的转换效率比DATE()高吗?@Paolo:不,它们是完全的同义词。我更喜欢这种语法,以避免与DAY()混淆,DAY()返回月份的日期。
SELECT  CAST(ps.date_scheduled AS DATE), COUNT(*)
FROM    payments_schedule ps
LEFT JOIN
        invoices i
ON      i.invoice_id = ps.invoice_id
LEFT JOIN
        orders o
ON      o.order_id = i.order_id
WHERE   ps.date_scheduled > '2009-06-01 00:00:00'
GROUP BY
        CAST(ps.date_scheduled AS DATE)
SELECT  CAST(ps.date_scheduled AS DATE), COUNT(*)
FROM    payments_schedule ps
LEFT JOIN
        invoices i
ON      i.invoice_id = ps.invoice_id
LEFT JOIN
        orders o
ON      o.order_id = i.order_id
WHERE   ps.date_scheduled > '2009-06-01 00:00:00'
GROUP BY
        CAST(ps.date_scheduled AS DATE)