【问题标题】:How do i retrieve and display a timestamp from a mysql database using PHP?如何使用 PHP 从 mysql 数据库中检索和显示时间戳?
【发布时间】:2011-07-08 09:05:40
【问题描述】:

目前我正在使用这行代码

echo date("F j Y g:i:s", $row[date]);

但它只是给了我January 1 1970 2:33:31

我也希望它看起来正常,因为如果我根本不执行date("F j Y g:i:s",,我得到的只是2011-03-02 23:00:30,这是正确的日期,但以非常不正常的方式显示

【问题讨论】:

  • “日期”值如何存储在 MySQL 中?整数域?字符/varchart?日期?约会时间?鉴于您从 PHP 中返回的内容,不知何故它以值为 2131 的整数形式返回,这是 1 月 1 日 2:33:31 的 unix 时间戳

标签: php mysql database timestamp


【解决方案1】:

在查询中类型转换为 UNIX_TIMESTAMP:

SELECT UNIX_TIMESTAMP(YourDateField) FROM YourTable

由于我在忽略此问题时看到了对另一个答案的响应,所以让我详细说明一下:

有两种常见的日期类型。两者实际上都是数字,表示自给定日期以来的持续时间。

  1. 一是天数(浮点数) 自 1900 年以来。一天就是一天。这 fraction 是一天中的分数。
  2. Other 是自 1970 年以来的秒数。这可以是 int(整秒)或 float(包括小数秒)。

如果您获得了第一个日期,但将其视为第二种格式,那么您就是以秒为单位计算天数。不是从 1900 年以来的 111 年,而是从 1970 年以来的 111 秒。这就解释了为什么会得到那个日期。

因此,请使用 UNIX_TIMESTAMP 函数,它将第一个浮点表示法转换为以秒为单位的时间戳。它是必需的,因为这也是 PHP 使用的类型。

【讨论】:

  • "UNIX_TIMESTAMP()" 返回一个纪元日期(自 1970 年以来的秒数),可以直接插入 "date('format', $val)"
【解决方案2】:

您可能需要使用 strtotime,日期函数期望第二个参数是 unix 时间戳

date("F j Y g:i:s", strtotime($row[date]));

如果你想要不同的格式,你可以看看这个页面:Date formatting

你可能想要这样的东西:

date("Y-m-d H:i:s", strtotime($row[date]));

【讨论】:

  • 它仍然给我这个:01/01/70January 1 1970 2:00:00
  • 尝试 var_dump($row[date]) 我认为您没有从数据库中获取有效日期,也许您应该尝试 $row['date'](带引号)
  • 引号没有帮助,var_dump 是什么意思?这是做什么的?
  • php > print date("F j Y g:i:s",strtotime('2011-03-02 23:00:30')); > March 2 2011 11:00:30 正如您在上面看到的 strtotime 是您所需要的。只要确保 $row['date'] 返回正确的值。使用 var_dump($row['data']) 查看变量的值和类型
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多