[英]How can I add 'Added Today' or 'Added yesterday' to my newly added records from mysql?
我查看了PHP日期手册,但找不到有关它的任何文档。 我在荷兰网站http://marktplaats.nl上找到了它。 如果您查看此网址,则可以看到“ Vandaag”,意思是“今天”,他们是如何做到的?
我现在拥有的代码:
<?= date ("d M 'y",strtotime($row['aangeboden-sinds'])); ?>
这可能只是UI逻辑中的一个简单条件。 数据库本身只是存储发生日期的日期,然后在显示逻辑中它们可能具有类似(伪代码)的内容:
if (currentDate - storedDate < 1)
echo "Today";
else if (currentDate - storedDate < 2)
echo "Yesterday";
else
echo storedDate;
您可以添加一些其他逻辑来解决午夜的翻转(至少对于特定的时区,除非您还具有用户的时区信息以使数学个性化),而不是直接进行24小时比较,但最后是实际上,它仍然只是显示逻辑中的一个条件,而不是关于如何存储数据的任何特殊条件。
很有可能用SQL而不是应用程序代码来完成。 这是在PostgreSQL中执行此操作的方法。 (该查询似乎无需修改即可在MySQL 5.6中运行,这让我有些惊讶。)
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);
使用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
当您order by created_at desc
,自然会以显示顺序返回数据(不考虑您的应用程序可能需要的其他任何列),而在php中,您只需要显示“ when_added”列即可。 您无需在php中进行任何操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.