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天。
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
}
放下我见过的最好和最详细的答案之一。谢谢Clayton,非常感谢! –
您应该使用DATEDIFF功能:
SELECT ....
FROM your_table
WHERE DATEDIFF(CURDATE(), event_date) = 30
凡EVENT_DATE是例如您的日期列。
谢谢你的回答! –
您可以获取两个日期,使用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
http://www.w3schools.com/sql/func_datediff.asp。这将帮助您通过查询直接获取数据 –
样本数据和期望的结果将真正帮助您解释您想要做什么。 –
@GordonLinoff我在8月份的帖子中有一个例子。我希望有一个表格可以导出过去30天内有30天价值为 –