3

私は自分の「問題」に対する適切な解決策を見つけましたが、mysqlページを読んだ後でも、その背後にあるロジックを理解していません。

現在、システムの登録情報を、テーブルの1つにある「日時」形式のフィールドに保存してい(YYYY-MM-DD hh:mm:ss)ます。

PHPページの1つにデータを表示したい場合、正確なフィールドデータを投稿するだけで、上記の形式が表示されます。

特定の行の値に対応する場所を使用すると、目的の形式が返されると思います。date("Y-m-d",$row["DATE"])$row["DATE"]

代わりに、次を使用する必要がありますdate("Y-m-d", strtotime($row["DATE"]))

どうしてこれなの?私の$row["DATE"]フィールドはそもそも文字列ではありません。日時フィールドに保存されているデータを簡単に再配置できるようにする必要がありますか?それは、日時に対応するためにテーブルセット全体を再構築する目的ではありませんでしたか?

4

2 に答える 2

5

MySQLには、date_formatと呼ばれる組み込み関数があり、これを使用して、希望する日付を表示できます。

SELECT DATE_FORMAT(date_field, '%Y-%m-%d') as date_field FROM table_name

マニュアルには、そのように表示するために必要なフォーマットと変数のリストがあります。このメソッドを使用すると、PHPで変換する必要はありません。さらに、MySQLが簡単に処理できるもののためのPHP側のコードが少なくなります。

編集

申し訳ありませんが、説明を探していたのを読んでください。

PHPのdate関数は、MySQLが使用していないUNIXタイムスタンプを取り込みます。MySQLは実際の日付形式IEを使用しYYYY-MM-DD HH:MM:SSます。ご存知のように、これは何年も後に準拠する必要があります。UNIXタイムスタンプは、1969年から2037年のように有効な範囲に制限されているため、チャットボックスメッセージなどのアイテムや、それらの日付の前後にあるとは思われないアイテムの「タイムスタンピング」に非常に役立ちます。 MySQLDATETIMEは、年が5桁に変わるか、世界が終わるまで消滅してはならないからです。

詳細については、 UNIXタイムスタンプのWIKIをお読みください。

于 2010-09-22T16:11:22.153 に答える
2

MySQLでは、UNIXタイムスタンプ形式で日付を選択できます。これにより、PHPで、要求どおりに日付をより簡単に使用できます。

前の回答は、この点を無視しているか、UNIXタイムスタンプの範囲制限のために軽視しているように見えましたが、それがあなたが探しているものである場合は...

SELECT UNIX_TIMESTAMP(datefield) as u_datefield FROM table

PHPで提案したように使用できるタイムスタンプ形式の日付が表示されます。

<?php
$showdate = date("Y-m-d",$row['u_datefield']);
?>

前の回答が示唆しているように、UNIXタイムスタンプの範囲は限られているため、1970年より前または2038年より後の日付が必要な場合は適切ではない可能性がありますが、今日の日常的な使用には最適です。

日付文字列に対してタイムスタンプを使用する主な利点は、タイムスタンプを加算および減算できることです。これは、文字列形式の日付でははるかに困難です。

于 2010-09-23T08:20:51.763 に答える