Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理MySQL日期时间的PHP_Php_Mysql_Datetime_Date - Fatal编程技术网

处理MySQL日期时间的PHP

处理MySQL日期时间的PHP,php,mysql,datetime,date,Php,Mysql,Datetime,Date,我有一个显示最新管理员笔记的表。我只展示最后3个音符。我正在数据库中存储日期时间。我想做的是能够说,如果此日期时间少于3天,则显示此新文本 现在,如果所有3个注释都在同一天,我只希望最新的一个显示新文本,而不是所有3个 以下是我的PHP: <?php if ($stmt = $mysqli->prepare("SELECT note, date_posted, admins.first_name, admins.last_name FROM admin_notes INNER

我有一个显示最新管理员笔记的表。我只展示最后3个音符。我正在数据库中存储日期时间。我想做的是能够说,如果此日期时间少于3天,则显示此新文本

现在,如果所有3个注释都在同一天,我只希望最新的一个显示新文本,而不是所有3个

以下是我的PHP:

<?php
    if ($stmt = $mysqli->prepare("SELECT note, date_posted, admins.first_name, admins.last_name FROM admin_notes INNER JOIN admins ON admin_notes.admin_id = admins.admin_id ORDER BY date_posted DESC LIMIT 3")) {

        $stmt->execute();
        $stmt->bind_result($note_text, $note_date, $note_fname, $note_lname);
        $stmt->store_result();

        while ($stmt->fetch()) {
            echo "<tr><td class=\"full\">$note_text<br /><span class=\"from\">".timesince($note_date)." by <strong>$note_fname $note_lname</strong></span></td></tr>";
        }
    }
?>

有人能帮我做到这一点吗

$past = new DateTime('-3 days');

// later
$note_datetime = new DateTime($note_date);

if ($note_datetime >= $past) echo 'new';
受rkosegi(同时被删除)答案的启发:您可以将查询更改为

SELECT note, date_posted, admins.first_name, admins.last_name, (DATEDIFF(NOW(),`date_posted`) < 3) AS isNew FROM [..]
选择note、date\u posted、admins.first\u name、admins.last\u name(DATEDIFF(NOW(),`date\u posted`)<3)作为isNew FROM[…]
现在您得到一个新的“行”
isNew
,即1或0

受rkosegi(同时被删除)答案的启发:您可以将查询更改为

SELECT note, date_posted, admins.first_name, admins.last_name, (DATEDIFF(NOW(),`date_posted`) < 3) AS isNew FROM [..]
选择note、date\u posted、admins.first\u name、admins.last\u name(DATEDIFF(NOW(),`date\u posted`)<3)作为isNew FROM[…]

现在您得到了一个新的“行”
isNew
,即1或0。

timesince()
返回new还是要输出它?您的确切问题尚不清楚。
timesince()
是否返回新的,或者是否要输出此信息?您的确切问题不清楚。谢谢您的回答。我无法让最上面的PHP部分工作,它显示“新”的最后一个是3天,而不是其他两个是1天和2天。至于查询,有没有办法只让最新的一个显示新的?我不希望在任何时候都显示超过1个新的,即使它们都不到3天。第一条评论:显然它必须是
=
,而不是
,谢谢你的回答。我无法让最上面的PHP部分工作,它显示“新”的最后一个是3天,而不是其他两个是1天和2天。至于查询,有没有办法只让最新的一个显示新的?我不希望在任何时候都显示超过1个新的,即使它们都不到3天。第一条评论:显然它必须是
=
,而不是