MySQL按日期排序

时间:2014-06-27 11:54:49

标签: mysql

我有一个MySQL数据库。我的数据库包含一个名为“created”的日期时间列的文档。我想按天分组,以便每天记录文件。但是,有些日子没有文件,因此它们不是输出的一部分。例如,如果文档不存在,我需要'2001-01-01'才能得到零计数。

我正在考虑创建一个额外的表格,其中包含我感兴趣的日期范围以及与我的表格进行外部联接。然后我可以按日期分组以获得我的结果。

有没有更好的方法来做这样的事情?

我的SQL代码:

Select date(created_at),c.text from Dates d left outer join classifier c on d.n=DATE(c.created_at)
    where c.classifier="2014streamlrall"
    and date(c.created_at)>='2014-03-01' and date(c.created_at)<='2014-05-01'
order by d.n;

左连接仍无效。

2 个答案:

答案 0 :(得分:3)

MySQL中没有更好的方法。

它缺少一个生成任意长度结果集的方法(类似于PostgreSQL的generate_series)和模拟这种方法(在SQL Server和Oracle中使用)所需的递归SQL。

即使在SQL Server上,填充并保留一个具有100年日期值的表(这需要多于73K的记录),与使用生成的结果集相比,在类似于您的报表上提供了更好的性能。

答案 1 :(得分:0)

使用'2001-01-01:0'创建一行是否真的存在问题?如果是这样,只需用PHP包装MySQL并用PHP控制输出。然后你只需回显(或创建一个XML条目,无论你需要什么格式),即使它是0.即使你现在对PHP一无所知,也有很多关于如何运行MySQL查询的教程在PHP和输出结果。祝你好运。