[英]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
DateTime 不支持分秒(微秒或毫秒等)
在您的情況下,您可以將 MySQL 中的值保存為 VARCHAR 並在讀取時將其大小寫/轉換為日期時間。
我遇到了同樣的問題,除了轉換之外沒有任何幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.