0

我需要一些帮助来解决一个简单的问题,但我无法弄清楚它是如何正常工作的

我将日期存储在 MySQL 中,例如 01/02/2012 07:40:23

这个日期被提取到 $list['timeadded'] 变量中的 php 中。

我需要检查当前日期与该日期之间的差异是否小于或等于 7 天,然后我将显示天数的差异,否则回显关闭。

有人可以帮我解决这个问题吗?

谢谢

4

4 回答 4

0

我认为这可能会满足您的需求(将此添加到您的查询中)

WHERE CURDATE() >= STR_TO_DATE( datecol, "%c/%d/%Y %H:%i:%s") - 间隔 7 天

PHP版本

$list['timeadded'] = '01/02/2012 07:40:23';
$dt1 = new DateTime($list['timeadded']);

$dt2 = new DateTime();
$dt2->sub(new DateInterval('P7D'));

$interval = $dt1->diff($dt2);
echo $interval->format('%d days');

看到它在行动

您可以获得使用天数$interval->d

于 2013-03-28T15:28:12.263 回答
0

我现在您正在寻找 PHP 解决方案,但您可以直接在 SQL 中以有效的方式完成这项工作,并且您可以避免签入 php。查看演示 URL 并检查输出。

http://sqlfiddle.com/#!2/ca91e/26

桌子:

create table t (id int(3), date varchar(40));
insert into t values (1, '25/03/2013 07:40:23'), 
(2, '26/03/2013 07:40:23'),
(3, '20/03/2013 07:40:23');

SQL:

SELECT id, date_format(curdate(), '%Y-%m-%d %h:%i:%s') AS CurrDate,
date_format(STR_TO_DATE(date, '%d/%m/%Y %h:%i:%s'), '%Y-%m-%d %h:%i:%s') AS MyDate,
if(datediff(date_format(curdate(), '%Y-%m-%d %h:%i:%s'), date_format(STR_TO_DATE(date, '%d/%m/%Y %h:%i:%s'), '%Y-%m-%d %h:%i:%s'))<=7,
datediff(date_format(curdate(), '%Y-%m-%d %h:%i:%s'), date_format(STR_TO_DATE(date, '%d/%m/%Y %h:%i:%s'), '%Y-%m-%d %h:%i:%s')), 'closed') AS Text
FROM t;

输出:

ID  CURRDATE                MYDATE                 TEXT
1   2013-03-29 12:00:00     2013-03-25 07:40:23     4
2   2013-03-29 12:00:00     2013-03-26 07:40:23     3
3   2013-03-29 12:00:00     2013-03-20 07:40:23     closed
于 2013-03-29T06:32:59.323 回答
0

在您的查询中,我会在该字段上使用 UNIX_TIMESTAMP()。所以:

SELECT
  UNIX_TIMESTAMP(timeadded) AS timeadded
FROM `your_table`

然后,有了这个结果,我会从当前日期中减去它。所以:

$difference = (time()-$list['timeadded']);

我现在有时差,以秒为单位。您可以使用 将其格式化为天、分钟或小时date()

于 2013-03-28T15:31:37.190 回答
0

您可以使用此处描述的 datediff 函数:http ://www.php.net/manual/en/datetime.diff.php或者您可以编写自己的函数来计算两个日期之间的差异,方法是将它们转换为 unix 时间戳,然后计算两者之间的秒数,然后计算天数。

function numberOfDays($datecol) {
     $dateSeconds = strtotime($datecol);
     $now = time();
     $seconds = $now - $dateSeconds;
     //calcualte the number of days 
     $days = $seconds / (60 * 60 * 24);
     return $days
 }
于 2013-03-28T15:32:50.937 回答