加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何基于一天(而不是日期)过滤集合?

发布时间:2020-12-13 22:24:11 所属栏目:PHP教程 来源:网络整理
导读:这里的最终目标是获取今天生日的客户列表,并向他们发送凭证代码(也以编程方式完成). 要做到这一点,我今天需要抓住所有客户的生日.在SQL中,我会将日期转换为日期和月份并查询,但我不确定如何在集合中执行此操作.目前我有: $collection = Mage::getResourceMo
这里的最终目标是获取今天生日的客户列表,并向他们发送凭证代码(也以编程方式完成).

要做到这一点,我今天需要抓住所有客户的生日.在SQL中,我会将日期转换为日期和月份并查询,但我不确定如何在集合中执行此操作.目前我有:

$collection = Mage::getResourceModel('customer/customer_collection')
        ->joinAttribute('dob','customer/dob','entity_id');
        ->addAttributeToFilter('dob','2015-10-02 00:00:00');

这仅适用于2015年2月10日持有DOB的人.在这个例子中,我需要匹配每个人的出生日期,即10月2日,而不仅仅是2015年10月2日.那么,我如何省略年份,只包括日期和月份?

我已经能够使用LIKE实现这一点,但这似乎没有得到优化,我想假设有一个更好的方法:

$collection = Mage::getResourceModel('customer/customer_collection')
        ->joinAttribute('dob','entity_id')
        ->addAttributeToFilter('dob',array('like' => '%-10-02 00:00:00'));

解决方法

一个简单的解决方案就像这个实现查询,根据您的需要逻辑在这里:

SELECT
  emp_firstname AS first_name,emp_lastname AS last_name,emp_birthday AS dob
FROM
  emp
WHERE
  MONTH(emp_birthday)=MONTH(CURDATE())
  AND DAY(emp_birthday)=DAY(CURDATE())
or if you want to consider also leap years,you could use this:

SELECT
  emp_firstname AS first_name,emp_birthday AS dob
FROM
  emp
WHERE
  emp_birthday +
    INTERVAL
      YEAR(CURDATE())-YEAR(emp_birthday) +
      (MONTH(emp_birthday)<MONTH(CURDATE())
       OR (MONTH(emp_birthday)=MONTH(CURDATE()) AND DAY(emp_birthday)<DAY(CURDATE())))
    YEAR = CURDATE()
If someone's date of birth is on 29th of February,and today is 28th of February and this year is not a leap year,my last query will consider his/her birthday as today.

My second query could be also simplified like this:

SELECT
  emp_firstname AS first_name,emp_birthday AS dob
FROM
  emp
WHERE
  (MONTH(emp_birthday)=MONTH(CURDATE())
  AND DAY(emp_birthday)=DAY(CURDATE()))
  OR (DAY(LAST_DAY(emp_birthday))=29
      AND DAY(emp_birthday)=29
      AND DAY(LAST_DAY(CURDATE()))=28);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读