给定日期作为参数检索月份和年份

时间:2017-02-24 03:32:57

标签: php mysql

在PHP中,我希望系统自动获取固定日期(第14个),无论我要求什么时候。

问题: 那么我是否需要为此事编写自定义函数,或者是否有可以使用的内置函数?

我还提供了一些例子如下:

A =当前日期(输入)
B =系统输出

方案
案例1 答:2017-03-30
B:2017-03-14

案例2
答:2017-05-31
B:2017-05-14

案例3
答:2017-06-03
B:2017-05-14

PHP

$fulldate = date("Ymd");
$year = substr($fulldate,0,4);
$month = substr($fulldate,4,2);
$date = substr($fulldate,6,2);

if($date <= 14){
$month -= 1;
}

echo $year.$month.'14';

的MySQL

select * from table where DATE_FORMAT(my_date,'%Y%m%d') = $year.$month.'14';

1 个答案:

答案 0 :(得分:1)

您可以使用

获取SQL中的“过去14个月”
select concat_ws('-', year(now()), month(now()), 14) - interval (day(now()) <= 14) month

“技巧”就是这一部分:

- interval (day(now()) <= 14) month

仅当当前日期<= 14时才会减去一个月

所以你可以使用这个查询

select * 
from `table`
where my_date = concat_ws('-', year(now()), month(now()), 14) - interval (day(now()) <= 14) month

没有在PHP中做任何事情。

使用PHP,您可以通过以下方式执行此操作:

$date = new DateTime();
$date->modify('-14 day');
$last14th = $date->format('Y-m-14');

echo $last14th;

$sql = "select * from `table` where my_date = '{$last14th}'";

<强>更新

查看我意识到的PHP代码,可以在SQL中使用相同的逻辑:

select date_format(now() - interval 14 day, '%Y-%m-14')