时间和日期差异
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)
");
我想请你帮忙解决我的问题。
我当前的代码:
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)
");