我正在尝试将以下 MYSQL SELECT 代码转换为 php 代码: DATEDIFF(date, NOW()) <= 31
基本上,如果日期小于或等于 31 天,剩下的就做。
到目前为止,我所做的是以下内容
$today = new DateTime('now');
$date = $row['date'];
$diff = date_diff($date,$today);
比里面如果周期我有条件:if ($diff <= 31)
我的 Sql 日期列仅指定为日期而不是日期时间我收到以下错误,我想知道如何仅计算日期
Warning: date_diff() expects parameter 1 to be DateTime, string given in D:'xampp'htdocs'website'c.php on line 299
bool(false)
Warning: date_diff() expects parameter 1 to be DateTime, string given in D:'xampp'htdocs'website'c.php on line 299
bool(false)
使答案不起作用的其他信息是,在我的SQL查询中,我用DATE_FORMAT(date,'%d %b %Y') as date
预先格式化了日期
任何帮助将非常受欢迎。谢谢!
在对
数据库数据进行date_diff()
之前,还需要将数据库数据转换为DateTime
对象。
$today = new DateTime('now');
$date = new DateTime($row['date']);
$diff = date_diff($date,$today);
现在意识到,由于$diff
是一个DateInterval
对象,并且您只关心天数组件,因此您可以像这样评估:
if ($date->days <= 31) {
// do something
}
尝试:
$today = new DateTime('now');
$date = new DateTime($row['date']);
$diff = $date->diff($today)->days;
date_diff期望这两个参数都是 DateTime 对象。这就是它所抱怨的。date_diff或 Datetime::d iff 返回 DateInterval,则可以从 days 成员变量中获取天数
这是算法:
$then = new DateTime('2010-05-30');//example, you could use $row['date']
$now = new DateTime();//now
$delta = $now->diff($then);
$data = array(
'year' => $delta->y,
'month' => $delta->m,
'day' => $delta->d,
'hour' => $delta->h,
'minute' => $delta->i,
'second' => $delta->s
);
//now
if($data['day'] <= 31)
{
//do the stuff
}