时间和日期差异

strtotime & datediff

我想请你帮忙解决我的问题。

我当前的代码:

require_once 'MysqliDb.php';
$db = new MysqliDb('localhost', 'xy', 'xy', 'xy');
$users = $db->rawQuery('select * from police where datediff(skadenca,current_date())=30');

所以现在我 select 当前日期为 +30 天的所有查询...但问题是因为我想使用该脚本所以也发送生日短信,我需要以某种方式忽略年份 current_date()...所以我想 select 完整的日期,但是 strtotime 和删除年份,所以我只需要日期和月份...

有什么快速解决办法吗?

抱歉,我仍在学习 php 和 sql,所以我的问题可能听起来很愚蠢?

感谢大家的回答

您可以从日期中提取月份和日期(在当前日期加上 30 天之后),然后进行比较:

where date_format(skadenca, '%m%d') = 
      date_format(date_add(current_date(), interval 30 day), '%m%d')

但是请注意,如果生日是 2 月 29 日,则可能没有当年的匹配项。

生日当天

您可以使用此比较:

where date_format(skadenca, '%m%d') = date_format(current_date(), '%m%d')

要同时匹配生日为 2 月 29 日且当前年份不是闰年的一天,请扩展为:

where (date_format(skadenca, '%m%d') = date_format(current_date(), '%m%d')
    or date_format(skadenca, '%m%d') = '0229' and dayofyear(current_date()) = 60)

当生日是 2 月 29 日且当前年份不是闰年时,这将匹配 3 月 1 日。

在您的代码中,它应该看起来像这样——这使用了一个字段 rojstvo,就像您在评论中提到的那样:

$users = $db->rawQuery("
    select * from police 
    where (date_format(rojstvo, '%m%d') = date_format(current_date(), '%m%d')
        or date_format(rojstvo, '%m%d') = '0229' and dayofyear(current_date()) = 60)
");