如何在mysql新添加的记录中添加“Added Today”或“昨天添加”?

时间:2013-07-23 13:36:25

标签: php mysql date datetime time

我查看了PHP日期手册,但找不到任何有关它的文档。我在荷兰网站http://marktplaats.nl上找到了它。如果你看this url你可以看到'Vandaag'这意味着'今天',他们是如何做到的?

我现在的代码:

<?= date ("d M 'y",strtotime($row['aangeboden-sinds'])); ?>

2 个答案:

答案 0 :(得分:0)

这可能只是UI逻辑中的一个简单条件。数据库本身只存储发生事件的日期,然后在显示逻辑中它们可能具有类似(伪代码)的内容:

if (currentDate - storedDate < 1)
    echo "Today";
else if (currentDate - storedDate < 2)
    echo "Yesterday";
else
    echo storedDate;

您可以添加一些额外的逻辑来计算午夜的翻转(至少对于特定的时区,除非您还有用户的时区信息来个性化数学),而不是直接的24小时比较,但是最后,它仍然只是显示逻辑中的一个条件,而不是关于数据存储方式的任何特殊情况。

答案 1 :(得分:0)

这可以在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中进行任何操作。