【问题标题】:how to format date coming from MYSQL如何格式化来自MYSQL的日期
【发布时间】:2009-10-24 22:41:46
【问题描述】:

简单的问题,但我需要它:)

  $query = "SELECT * 
FROM  `set` 
WHERE ID = '$id'";

$result = mysql_query($query);
$info = mysql_fetch_assoc($result);

$frmdate = $info['date'];

到目前为止我尝试过

$timestamp = strtotime($info['date']);
$joined_date = date("j M. Y", $timestamp);

但没有运气!

mysql中的“date”字段是DATE数据类型

我想让它像“2009 年 10 月 23 日”

我该怎么做?

谢谢

【问题讨论】:

    标签: php mysql date


    【解决方案1】:

    您可以使用strtotime 将日期的字符串表示形式转换为时间戳,然后您可以使用date 将时间戳转换为您喜欢的任何格式:

    $timestamp = strtotime($frmdate);
    $formatted_date = date("j M. Y", $timestamp);
    

    您还可以将翻译从 yyyy-mm-dd 格式移动到时间戳到查询本身,使用:

    select unix_timestamp(field_name) as field_name_timestamp
    

    【讨论】:

    • 谢谢,$frmdate 是“2009-10-01”,但您的代码是“31 Dec. 1969”
    • 这意味着,根据strtotime 的文档,$frmdate 未成功解析。
    • 我做不到,$info['date'] 是一个 DATE 字段,我试过这个 $timestamp = strtotime($info['date']); $joined_date = date("j M. Y", $timestamp);但又错了
    【解决方案2】:

    您可以在 MySQL 数据库服务器中格式化日期。

    SELECT  *, DATE_FORMAT( date, '%e %b. %Y' ) AS formatted_date
    FROM    `set` 
    WHERE   ID = '$id'
    

    然后您只需要修改您的客户端 php 代码以仅使用 $info['formatted_date'] 中的数据库调用返回的字符串。如果您不想在月份的某天使用前导零,请在格式字符串中使用“d”代替“e”。

    【讨论】:

      猜你喜欢
      • 2012-01-30
      • 2013-01-20
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多