【问题标题】:How can I make a column that stores the time that row was created in mysql?如何创建一个列来存储该行在 mysql 中创建的时间?
【发布时间】:2014-12-12 13:42:51
【问题描述】:

经过大量谷歌搜索,我找不到答案。我想在 mysql 中创建一个列,存储该行的创建时间为 HH:MM:SS

我正在创建一个聊天室,该表当前有一个用于消息和 id 的列

我不想使用时间戳或日期时间,因为我不想有日期月份年份等。只有小时分钟和秒。

我试过时间,但总是说时间是 00:00:00

编辑:我想我希望能够仅从时间戳中回显时间。

我试过echo '<div><p>User@' . substr($value['Time'], 11) . '->' . $value['message'] . '</p></div>';,但还是不行。

【问题讨论】:

  • 为什么不使用datetimetimestamp,您仍然可以在这些上提取时间。无论如何,也许您正在寻找 time 数据类型
  • ^^^ 打败我,让我免于打字。
  • “我试过时间,但它总是说时间是 00:00:00” - 代码会很好。 哦, 答案已经在 phpMyAdmin 里面了 ;)
  • @Fred-ii- 是的,它很可能只是插入问题,插入日期时间没有问题。你仍然可以在那里提取时间
  • @Sawyer 如果您实际上在查询中包含 'NOW()' 中的引号,那么是的,它不会起作用。请向我们展示您的代码。直到午夜,我们才能猜到。 INSERT INTO table (column_x, column_y) VALUES ('text', NOW()) ('text', 'NOW()')

标签: php mysql database phpmyadmin


【解决方案1】:

编辑答案

如果您想在 MySQL 中使用常规的 TIMESTAMP 字段,请先创建该字段。

ALTER TABLE  `YourTable` ADD  `LastAccessed` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;

设置完字段后,您可以不理会它。当您插入记录时,通过null 作为值,它将默认为当前时间。当您更新记录时,时间将被调整。

要从TIMESTAMP 字段中获取时间,您需要运行选择查询并获取结果。出于说明目的,这将类似于以下内容:

//Integrate this into your existing code
$result = mysqli_query($connection, "SELECT LastAccessed FROM YourTable"); //get only the time field for this example
$row = mysqli_fetch_array($result);
$time = new DateTime($row['LastAccessed']); //The constructor accepts the time information as an argument
echo $time->format("H:i:s"); //This is your time information.

既然你现在有一个TIMESTAMP 字段,数据库不仅会负责更新它的正确时间,而且你可以随时修改$time->format() 方法的参数来生成一个包含各种时间数据的字符串不同的方式。

时间戳被抽象化,您的应用程序获得了灵活性。

双赢,对吧?

原答案

在 MySQL 中创建一个 char(8) 列,然后将调用的输出发送到:

date("H:i:s");

虽然在 MySQL 中使用时间戳字段是最佳选择,但考虑到您可以在与记录交互时更新它。您没有必须使用整个时间戳。

【讨论】:

  • 提出坏主意,是个坏主意
  • @Dagon Hmmm.... 我根据 OP 的预期结果回答了这个问题,同时提出了一个更好的主意。可能不是最好的主意,但这是被问到的。
  • OP 不想共享查询代码,这是我不费心回答问题的主要原因,对于此类问题,我从不这样做;它们只是一大罐蠕虫。 OP显然做错了什么。根据我从 cmets 收集到的信息,OP 在函数周围使用引号;这就是我从中得到的。在被要求分享代码几次后,OP 仍然没有发布它。我投票关闭。
  • @Fred-ii- 是的,回顾我回答后进来的几个 cmets,似乎 OP 从一开始就做错了。最初我从中得到的是 OP 想要一个可以存储 only 时间的字段,而您没有使用常规时间戳。希望他遵循时间戳教程的链接并改为使用它。
  • 希望如此,但 OP 似乎已经离开了大楼。我会等 :::ELVIS:::,但不会等这个人 ;)
猜你喜欢
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 2020-04-20
  • 2019-10-23
  • 2016-12-11
相关资源
最近更新 更多