假設我們有一張名為events的表,其中有一個event_date字段是DATETIME 類型。
<?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
if ($mysqli->connect_error) {
die("連接失敗: " . $mysqli->connect_error);
}
$sql = "SELECT event_date FROM events WHERE id = 1";
$result = $mysqli->query($sql);
if ($result) {
// 直接取出日期字段
$date = $result->fetch_column();
echo "原始日期格式: " . $date;
} else {
echo "查詢失敗: " . $mysqli->error;
}
$mysqli->close();
?>
輸出可能是:
原始日期格式: 2025-05-23 14:30:00
如果你只想要年月日部分"2025-05-23" ,或者想用其他格式輸出,比如"23 May 2025" ,就需要對結果進行處理。
<?php
$date = $result->fetch_column();
$dateObj = new DateTime($date);
// 格式化為只顯示年月日
$formattedDate = $dateObj->format('Y-m-d');
echo "格式化後的日期: " . $formattedDate;
?>
這樣輸出:
格式化後的日期: 2025-05-23
或者:
$formattedDate = $dateObj->format('d M Y');
echo "格式化後的日期: " . $formattedDate;
輸出:
格式化後的日期: 23 May 2025
如果想讓數據庫直接返回格式化後的字符串,可以使用MySQL 的DATE_FORMAT函數:
<?php
$sql = "SELECT DATE_FORMAT(event_date, '%Y-%m-%d') AS event_date FROM events WHERE id = 1";
$result = $mysqli->query($sql);
if ($result) {
$date = $result->fetch_column();
echo "SQL 格式化後的日期: " . $date;
}
?>
輸出:
SQL 格式化後的日期: 2025-05-23
雖然可以用substr直接截取日期字符串的前10 個字符,但不夠靈活,且容易出錯。
$date = $result->fetch_column();
$shortDate = substr($date, 0, 10);
echo "截取的日期: " . $shortDate;
mysqli_result::fetch_column返回的日期是字符串格式,需轉換後才能自定義格式。
使用PHP DateTime是推薦的方法,既靈活又安全。
也可以在SQL 查詢中直接格式化,減少PHP 端的處理。
避免用字符串截取日期,除非確定格式穩定。
合理選擇處理方式,可以讓你的日期顯示更符合業務需求,同時保證代碼的可維護性和健壯性。