【问题标题】:Format date function - Customizing output格式化日期功能 - 自定义输出
【发布时间】:2020-02-21 20:21:11
【问题描述】:

我是 PHP 新手,我正在尝试从我的数据库中检索日期并将其格式化为:yyyy-mm-dd hh:mm:ss 到此格式:dd-mm-yyyy hh:mm:ss。我的第一个想法是在存储到服务器之前转换格式,但我读过这是一种不好的做法,所以我在输出数据时尝试这样做。

关键是,它不起作用,当我使用 Format 函数时,它会更改格式,但方式错误。

在这个例子中,我使用的是 'MM/dd/yyyy' 格式字符串,但我已经尝试了不同的格式,并且输出总是相同的。

表格列是日期时间格式,但我已经尝试过文本和 varchar 格式,在第一种情况下,输出与日期时间格式的输出相同,在第二种情况下,我只收到前四个数字。

还有一件事,我正在使用 PDO。

这是我的查询:

   public function funcaoTesteGetValues() {

        $query = "SELECT teste_data,FORMAT(teste_data,'MM/dd/yyyy') AS 'nova_data' FROM teste";

        $stmt = $this->conexao->prepare($query);  

        $stmt->execute();

        return $stmt->fetchAll(\PDO::FETCH_OBJ);

    }

输出如下:

[teste_data] => 2015-12-04 04:04:00 => 数据库格式(日期时间)

[nova_data] => 20,151,204,040,400 => 输出格式

我需要什么:

04-12-2015 04:04:00

【问题讨论】:

  • 为什么不将其作为日期返回并用 PHP 格式化?
  • 您确定您使用的是 SQL Server 吗?输出看起来更像 MySQL FORMAT() 输出而不是 SQL Server 的输出。
  • @Berg_Durden 不,我的问题与您正在使用的数据库服务器有关。您在标题中提到了 SQL Server,但您得到的输出看起来不像预期的那样。
  • 好的,不用担心。当有关于 SQL 的问题时,请确保使用正确的标签。不同系统(MySQL、SQL Server、pgSQL...)之间的答案通常会有所不同
  • @Berg_Durden 那是一个人犯错误的时候,一个人学会了:)

标签: php mysql sql datetime format


【解决方案1】:

FORMAT() 用于四舍五入到一定小数位数的数字。您希望 DATE_FORMAT() 具有正确的格式标识符

DATE_FORMAT(teste_data,'%m/%d/%Y') AS 'nova_data'

注意这仅适用于您的数据库服务器是 MySQL。

【讨论】:

  • 效果很好。非常感谢。我不敢相信它这么简单。我花了好几个小时试图解决这个问题,现在(感谢你们俩),我发现我在寻找错误的信息。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多