如何按年分组时,我有一个列命名日期的格式dd/mm/yyyy


How to group by year when I have a columns named date in the format dd/mm/yyyy

我有一个表,其中的日期列格式为dd/mm/yyyy。我有一个手风琴,我想用它来展示2014年、2013年等年份。当我点击2014(我的手风琴),它会展开。如果我有一个只包含年份的列,那就容易多了。现在我很困惑是否要简单地创建一个名为year的列。或者在PHP中做一些事情来让这个想法工作。

基本上,我必须显示一个用户界面,其中客户购买历史记录将被显示。明智的。当我点击2014的窗格将展开和内部,他的所有发票将是可见的。

任何帮助都是感激的提前感谢

您可以GROUP BY函数的结果。我更喜欢YEAR(),因为据我所知这是最快的方式。Year将只提取日期的Year部分。下面是一个示例:

SELECT date_column FROM ... GROUP BY YEAR(date_column)

注意,转换是缓慢的,将导致非常缓慢的查询。相反,您可能希望有一个日期列,它将强制使用日期索引而不是字符串索引,从而获得更好的性能。

您可以使用php操作结果以获得您想要的结果。

$result = some_query_result(); //however you're retreiving the data
foreach($result as $row)
{
    $dateArray = explode('/', $row['date']); //whatever the date field is.
    $year = end($dateArray);
    //now you have the year - do with it as you please.
    //maybe create an array containing the data or something
    $theData[$year][] = $row; //now you'll have data keyed by year in the array
}

不知道你在做什么,或者你如何创建html,但这应该让你在正确的轨道上。

试试下面的代码:

SELECT DATE_FORMAT( `date` , '%Y' ) AS d_yr
FROM tablename
GROUP BY `d_yr` ASC 

SELECT *
FROM tablename
GROUP BY DATE_FORMAT( `date` , '%Y' ) ASC