簡體   English   中英

給定日期作為參數檢索月份和年份

[英]Given date as parameter retrieve month and year

在PHP中,無論我請求什么時間,我都希望系統自動獲取固定日期(第14個)。

問題 :那么我是否需要為此編寫一個自定義函數,或者我可以使用任何內置函數?

我還提供了一些示例,如下所示:

A =當前日期(輸入)
B =系統輸出

方案
情況1
一個:2017-03-30
乙:2017-03-14

情況二
一個:2017-05-31
乙:2017-05-14

情況3
一個:2017-06-03
乙: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';

您可以使用以下命令在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')

您可以使用此:

select DAY(DATE_FORMAT("2017-06-03",'%Y-%m-%d'));
+-------------------------------------------+
| DAY(DATE_FORMAT("2017-06-03",'%Y-%m-%d')) |
+-------------------------------------------+
|                                         3 |

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM