web-dev-qa-db-ja.com

mysqlタイムスタンプを実際の日付と時刻に変換しますか?

Mysqlテーブルに保存された日付は、各行にCURRENT TIMESTAMPとして保存するように設定されており、次のように保存されます。

2010-05-29 01:17:35

しかし、私がやろうとしているのは、何らかの方法でPHPを使用して、すべてを分離し、次のような日付を作成できるようにすることです:

2010年5月29日1:17 AM

少なくとも誰かが私がとるべき正しい道に私を導くことができます。どんな助けも大歓迎です!

34
mcbeav
echo date('M j Y g:i A', strtotime('2010-05-29 01:17:35'));

http://php.net/manual/en/function.date.php

60
deceze

次の2つのソリューションがあります。

  • strtotime() を使用して日付をタイムスタンプに解析し、 date() 文字列に再フォーマットする
  • または、 DateTime クラスを使用します


PHPコードでは、これは以下を使用することを意味します:

echo date('M j Y g:i A', strtotime('2010-05-29 01:17:35'));

または:

$dt = new DateTime('2010-05-29 01:17:35');
echo $dt->format('M j Y g:i A');


strtotime + dateは、最もよく使用されるソリューションです。しかし、それは最善の解決策ではありません:それらを使用すると、UNIXタイムスタンプで作業します。つまり、日付の範囲(32ビット整数を使用する場合は1970年から2038年まで)を意味します

一方、DateTimeクラスを使用すると、使用できる日付の範囲に制限がなくなります。

23
Pascal MARTIN

テーブルにDATETIMEフィールドがあり、日付フィールドのみが必要な場合:

SELECT DATE_FORMAT(timestamp,'%M %D, %Y') FROM Mytable;

または:

SELECT DATE_FORMAT(timestamp,'%Y-%m-%d') FROM Mytable;

ここで、timestampは列名です。

3
sreekanth