处理MySQL日期时间的PHP
我有一个显示最新管理员笔记的表。我只展示最后3个音符。我正在数据库中存储日期时间。我想做的是能够说,如果此日期时间少于3天,则显示此新文本 现在,如果所有3个注释都在同一天,我只希望最新的一个显示新文本,而不是所有3个 以下是我的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
<?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天。第一条评论:显然它必须是=
,而不是