簡體   English   中英

PHP 如何從 Mysql 返回 datetime(6)?

[英]PHP How to return datetime(6) from Mysql?

當我查詢 dateTime(6) 時,PHP 會截斷我的 6 秒小數部分。

這是我的 php 代碼示例:

$sql = 'SELECT date FROM tbl';
        $statement = $connection->prepare($sql);
        $statement->execute();
        $statement->store_result();
        $statement->bind_result($date);
        while ($statement->fetch()) 
        {
        echo $date."\n";
        }

這將返回 2014-01-08 21:31:15 而不是 2014-01-08 21:31:15.995000 這是存儲在表中的內容。 如何獲取表中實際存儲的內容?

問題出在您用來與 Mysql 通信的 PHP 適配器上。 據我所知,您正在使用 PDO 適配器來獲取查詢結果。 但是,此適配器不支持小數秒 (YYYY-MM-DD HH:MM:SS.F)。

PDO 適配器支持 YYYY-MM-DD HH:MM:SS 並自動將日期時間列的值格式化為這種格式。

這是 PDO 適配器本身的一個錯誤。 請找到以下鏈接以供參考: http : //grokbase.com/t/php/php-bugs/11524dvh68/php-bug-bug-54648-new-pdo-forces-format-of-datetime-fields

您可以將其格式化以包含它。 %f 包括六位微秒

 SELECT DATE_FORMAT(date, '%Y-%m-%d %H:%i:%s.%f') FROM tbl

PHP 7.1 中的mysqli仍然沒有正式支持這很瘋狂,但無論如何,這里有一個解決方法。

select concat(`DateTime6`)`DateTime6` from ...

基本上將它轉換為對我有用的字符串,盡管如此丑陋。

這個錯誤最終在 PHP v7.3.0 中得到修復。

相關錯誤詳情: https : //bugs.php.net/bug.php?id=76386

在您的情況下,您可以將 MySQL 中的值保存為 VARCHAR 並在讀取時將其大小寫/轉換為日期時間。

我遇到了同樣的問題,除了轉換之外沒有任何幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM