2013-11-26 38 views
1

我有一个带有生日日期字段的联系表。Cakephp如何仅按日期和月份排序

现在我想在下周内显示生日的列表。我可以展示它,但订单是基于年份。

如何订购数据,仅基于月份和日期?

$sideBarTaskSuggestion = 
$this->Project->Contact->find('all', array(
    'conditions' => array(
     'Contact.group_id' => $this->Session->read('Auth.User.group_id'), 
     'Contact.birthdate NOT' => null, 
     'AND' => array(
      array('Contact.birthdate NOT' => null), 
      array('Contact.birthdate + INTERVAL EXTRACT(YEAR FROM NOW()) - 
       EXTRACT(YEAR FROM Contact.birthdate) YEAR <=' => date('Y-m-d', 
       strtotime('+1 week'))), 
      array('Contact.birthdate + INTERVAL EXTRACT(YEAR FROM NOW()) - 
       EXTRACT(YEAR FROM Contact.birthdate) YEAR >=' => date('Y-m-d')), 
    ) 
    ), 
    'order' => 'Contact.birthdate DESC' 
) 
); 
+1

难道除了我谁也懒得读的问题时,有水平滚动条的要求? –

+1

你有没有尝试在你的'AND'条件下做同样的事情?具体来说:''order'=>'EXTRACT(从Contact.birthdate开始的月)DESC'' – iso27002

+0

@DanBracuk修复水平滚动条 – Harts

回答

3

当你说你要 '?对数据进行排序,只是基于月份和日子只有',我假设你的意思是:

  • 2013年11月22日
  • 1922年10月21日
  • 2000年3月5日
  • 2001年1月31日
  • 1990年1月1日

那就试试这个: 'order' => 'DAYOFYEAR(Contact.birthdate) DESC'

+0

真棒工作! – Harts

+0

以上是在即将到来的1周内查找生日的查询吗?如果我想改变即将到来的1个月,该怎么办?请分享 –

+0

@AadityaBhatt - 我的答案是结果如何排序。您需要更改'conditions'数组来更改返回的数据。 – AgRizzo

相关问题