現在の位置: ホーム> 最新記事一覧> クエリの処理日形式の問題は、mysqli_result :: fetch_columnの結果です

クエリの処理日形式の問題は、mysqli_result :: fetch_columnの結果です

gitbox 2025-05-26

1.基本例: FETCH_COLUMNを使用して日付フィールドを取得します

イベントと呼ばれるテーブルがあると仮定します。ここでは、イベント_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

2。質問:日付をフォーマットする方法は?

年、月、日のパート「2025-05-23」のみが必要な場合、または「2025年5月23日」などの他の形式で出力したい場合は、結果を処理する必要があります。


3。ソリューション1:PHPのDateTimeクラスを使用して処理する

<?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

4。ソリューション2:SQLクエリ中のフォーマット日

フォーマットされた文字列をデータベースに直接返す場合は、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

5。ソリューション3:文字列関数との傍受(推奨されません)

substrを使用して、日付文字列の最初の10文字を直接傍受することができますが、十分な柔軟性がなく、エラーが発生しやすくなります。

 $date = $result->fetch_column();
$shortDate = substr($date, 0, 10);
echo "インターセプトの日付: " . $shortDate;

要約します

  • mysqli_result :: fetch_columnによって返される日付は文字列形式であり、カスタマイズする前に変換する必要があります。

  • PHP DateTimeを使用することは推奨される方法であり、柔軟性と安全の両方です。

  • また、SQLクエリで直接フォーマットして、PHP側の処理を減らすこともできます。

  • 形式が安定していると判断されない限り、文字列で日付を傍受しないでください。

処理方法の合理的な選択は、コードの保守性と堅牢性を確保しながら、ビジネスニーズに沿って日付をより詳細に表示することができます。