Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何添加';今天添加';或';昨天添加';从mysql添加到我的新记录?_Php_Mysql_Date_Datetime_Time - Fatal编程技术网

Php 如何添加';今天添加';或';昨天添加';从mysql添加到我的新记录?

Php 如何添加';今天添加';或';昨天添加';从mysql添加到我的新记录?,php,mysql,date,datetime,time,Php,Mysql,Date,Datetime,Time,我查看了PHP日期手册,但找不到任何关于它的文档。我在一个荷兰网站上找到的。如果你看你可以看到“Vandaag”这意味着“今天”,他们是怎么做到的 我现在拥有的代码是: <?= date ("d M 'y",strtotime($row['aangeboden-sinds'])); ?> 它可能只是UI逻辑中的一个简单条件。数据库本身只存储发生事件的日期,然后在显示逻辑中,它们可能有类似(伪代码)的内容: if(当前日期-存储日期

我查看了PHP日期手册,但找不到任何关于它的文档。我在一个荷兰网站上找到的。如果你看你可以看到“Vandaag”这意味着“今天”,他们是怎么做到的

我现在拥有的代码是:

<?= 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