繁体   English   中英

如何从MySQL新添加的记录中添加“今天添加”或“昨天添加”?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM