• ベストアンサー

MySQLのdate型をphpで○年○月○日と表示したい

MySQL5+PHP5の環境でMySQLのフィールドにdate型で2008-09-25のように本の発売日がデータが格納されています。 PHPで2008-09-25を2008年9月25日というように表示したいのですが、どのような関数を使えばいいのでしょうか。 やりたいことは、本の発売日をphpのフォームからMySQLに格納して、2008年9月25日のように自由に整形表示したいです。 また、月別のデータ表示や日付の計算なんかもしたいのですが、このような場合、MySQL側をdate型にしないで他の型にしたほうがいいのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taaaaaaa
  • ベストアンサー率38% (31/80)
回答No.5

エンコードをETF8かEUCにするか、SJISで出力する場合、 $ddd = "2008-09-25"; $hen = strtotime("$ddd"); $dday = date("Y")."年".date("m")."月".date("d")."日"; としてやればどうでしょうか? これなら大丈夫かと。

astu2006
質問者

お礼

どうもありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

回答No.4

MySQL SELECT UNIX_TIMESTAMP(date型のカラム名) FROM テーブル名; PHP echo date('Y年m月d日', MySQLから取得した値); 日付の計算については、一度TIMESTAMPに変換してから行います。

astu2006
質問者

お礼

どうもありがとうございました。

すると、全ての回答が全文表示されます。
  • taaaaaaa
  • ベストアンサー率38% (31/80)
回答No.3

strtotimeとdate関数を使っても出来ますよ。 $ddd = "2008-09-25"; $hen = strtotime("$ddd"); $dday = date("Y年m月d日",$hen); MySQL側ではデータはそのままで、PHPでstrtotimeを使ってタイムスタンプに変換するといろいろな計算も出来ます。 日付の比較、1日後、1ヵ月後など。

参考URL:
http://nyx.pu1.net/function/datetime/strtotime.html
astu2006
質問者

補足

どうもありがとうございます。 教えて頂いた方法で試してみると、 2008・09月25日 このように「年」が「・」に文字化けしてしまいます。 文字化けするなら「月」「日」も化けると思うのですが、どうして年だけおかしくなってしまうのでしょうか。

すると、全ての回答が全文表示されます。
  • tsaito
  • ベストアンサー率68% (17/25)
回答No.2

それで問題ないと思いますが、表示に使用する際などは、 文字コードに気をつけて、必要であればエンコードしてください。

すると、全ての回答が全文表示されます。
  • tsaito
  • ベストアンサー率68% (17/25)
回答No.1

MySQLから、日付を持ってくるときに date_format関数使ってしまえばいいと思うのですが、 形式がYYYY-MM-DDから変更できないなら、 explodeで分割してくっつければいいかと。 $data = "2008-09-25"; list($year, $mon, $day) = explode("-", $data); echo $year . "年" . $mon . "月" . $day . "日";

astu2006
質問者

補足

どうもありがとうございます。 DATE_FORMATを使う場合は、DATE_FORMAT(hiduke,'%Y年%m月%d日')でselectすれば、 echo $row[hiduke]; で自動的に○年○月○日になるのでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A