Php 如何添加';今天添加';或';昨天添加';从mysql添加到我的新记录?
我查看了PHP日期手册,但找不到任何关于它的文档。我在一个荷兰网站上找到的。如果你看你可以看到“Vandaag”这意味着“今天”,他们是怎么做到的 我现在拥有的代码是:Php 如何添加';今天添加';或';昨天添加';从mysql添加到我的新记录?,php,mysql,date,datetime,time,Php,Mysql,Date,Datetime,Time,我查看了PHP日期手册,但找不到任何关于它的文档。我在一个荷兰网站上找到的。如果你看你可以看到“Vandaag”这意味着“今天”,他们是怎么做到的 我现在拥有的代码是: <?= date ("d M 'y",strtotime($row['aangeboden-sinds'])); ?> 它可能只是UI逻辑中的一个简单条件。数据库本身只存储发生事件的日期,然后在显示逻辑中,它们可能有类似(伪代码)的内容: if(当前日期-存储日期
<?= date ("d M 'y",strtotime($row['aangeboden-sinds'])); ?>
它可能只是UI逻辑中的一个简单条件。数据库本身只存储发生事件的日期,然后在显示逻辑中,它们可能有类似(伪代码)的内容:
if(当前日期-存储日期<1)
呼应“今天”;
else if(当前日期-存储日期<2)
呼应“昨天”;
其他的
回波存储数据;
您可以添加一些额外的逻辑来解释午夜的滚动(至少对于特定时区,除非您还有用户的时区信息来个性化计算),而不是直接的24小时比较,但最终它实际上仍然只是显示逻辑中的一个条件,数据的存储方式没有什么特别之处。这很可能是在SQL中完成的,而不是在应用程序代码中完成的。下面是如何在PostgreSQL中实现这一点。(在MySQL 5.6中,这个查询似乎可以正常工作,这让我有点吃惊。)
使用CASE语句和简单的日期算法可以做任何你想做的事情
select test_id,
case current_date - cast(created_at as date)
when 0 then 'Added today'
when 1 then 'Added yesterday'
else 'Added some time ago'
end as when_added
from test
order by created_at desc, test_id asc
TEST_ID WHEN_ADDED
--
1 Added today
2 Added yesterday
3 Added some time ago
当您在desc创建order时,您的数据自然会按显示顺序返回(不考虑应用程序可能需要的任何其他列),而在php中,您只需要显示“When_added”列。您不需要在php中进行任何操作。您可以比较文章日期和当前日期吗?如果您对类似的内容感兴趣,还有一个漂亮的jQuery插件。(这也将时间计算移到了客户端,使服务器不必在整个页面中进行日期计算,并且由于它会自动更新,因此具有更好的UI)。请参阅我的编辑。我发布了我当前的代码:)希望有人能帮助我实现@David的答案。请看我的编辑,我已经添加了我当前的代码,因为我不知道如何使用它。@Keessonema:问题中的代码应该成功地显示了存储的日期,这将是我伪代码中的最后一个条件。对于前面的条件,您需要将其与当前日期进行比较。您可以在PHP中获得两个日期之间的差异:不工作。它给出了消息:使用未定义的常数storedDate-假定为“storedDate”
@KeesSonnema:你只是在复制和粘贴我的伪代码吗?这样不行。我已经演示了逻辑,但这不是一个实际的PHP实现。你明白逻辑吗?是的,但这就是我添加代码的原因。如何从mysql中命名currentdate
?
create table test (
test_id integer primary key,
created_at timestamp not null default current_timestamp
);
insert into test values
(1, current_timestamp),
(2, current_timestamp - interval '1' day),
(3, current_timestamp - interval '10' day);
select test_id,
case current_date - cast(created_at as date)
when 0 then 'Added today'
when 1 then 'Added yesterday'
else 'Added some time ago'
end as when_added
from test
order by created_at desc, test_id asc
TEST_ID WHEN_ADDED
--
1 Added today
2 Added yesterday
3 Added some time ago