PHP计数日期和今天日期

PHP计数日期和今天日期

问题描述:

在我的dates数据库中我有一个日期表,有两个后续工作要完成,一个30天后,一个60天后。我需要建立一个使用MySQL查询的页面,从dates表中取得30day值为No(我可以这样做)的所有日期。现在棘手的部分是,我需要它仅输出符合该标准的日期,并且距离当前日期为30天。PHP计数日期和今天日期

例如:8月4日& 6具有的No一个30day值,8月5日具有Yes一个30day值。今天的日期是9月4日.30天前是8月5日。

我需要查询才能在这种情况下显示8月4日,因为从8月6日和8月5日已经完成。

我不确定用什么样的函数来做这个计数。我感谢你的帮助

编辑:

Date - 30day Value 
July 1 - Yes 
July 5 - No 
August 1 - No 
August 5 - No 
August 6 - Yes 

今天的日期是9月2日

表将显示7月5日和8月1日,作为他们的30天值是无,他们更比今天的日期晚了30天。

+0

http://www.w3schools.com/sql/func_datediff.asp。这将帮助您通过查询直接获取数据 –

+1

样本数据和期望的结果将真正帮助您解释您想要做什么。 –

+0

@GordonLinoff我在8月份的帖子中有一个例子。我希望有一个表格可以导出过去30天内有30天价值为 –

MySQL的DATEDIFF函数允许您在查询中减去2个日期。

http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_datediff

DATEDIFF()将返回EXPR1 - 表达式2表示为从一个日期至另一个在天的值。 expr1和expr2是日期或日期和时间表达式。计算中只使用数值的日期部分。

例如:

SELECT some_id, date_column 
FROM date_table 
WHERE DATEDIFF(CURDATE(), date_column) = 30 

你也可以同时选择30到60天这样的,也有60天的截止日期,以便它不是搜索整个表:

SELECT some_id, date_column 
FROM date_table 
WHERE date_column>=DATE_SUB(CURDATE(), INTERVAL 60 DAY) 
AND DATEDIFF(CURDATE(), date_column) IN (30, 60) 

由于我对自己的要求有所了解,因此您可能还希望这样做,它会在结果集中将结果返回为“是”或“否”:

SELECT some_id, date_column, 
CASE DATEDIFF(CURDATE(), date_column) 
    WHEN 60 THEN 'Yes' 
    WHEN 30 THEN 'Yes' 
    ELSE 'No' 
END CASE AS is_3060_day 
FROM date_table 
WHERE date_column>=DATE_SUB(CURDATE(), INTERVAL 60 DAY) 

另外,如果你想做到这一点在PHP端,你可以使用PHP的date_diff功能:

http://php.net/manual/en/function.date-diff.php

function dateDifference($date_1 , $date_2 , $differenceFormat = '%a') 
{ 
    $datetime1 = date_create($date_1); 
    $datetime2 = date_create($date_2); 

    $interval = date_diff($datetime1, $datetime2); 

    return $interval->format($differenceFormat); 

} 
$result = dateDifference($date1, $date2) 
if ($result==30 || $result==60) { 
    // Do something 
} 
+1

放下我见过的最好和最详细的答案之一。谢谢Clayton,非常感谢! –

您应该使用DATEDIFF功能:

SELECT .... 
FROM your_table 
WHERE DATEDIFF(CURDATE(), event_date) = 30 

EVENT_DATE是例如您的日期列。

+0

谢谢你的回答! –

您可以获取两个日期,使用PHP函数

$prevdate = date_create("2013-03-15"); 
$currdate = date_create("2013-12-12"); 
$diff = date_diff($prevdate,$currdate); 
echo $diff->format("%R%a days"); 

输出

272 days