プロが教える店舗&オフィスのセキュリティ対策術

MySQL5+PHP5の環境でMySQLのフィールドにdate型で2008-09-25のように本の発売日がデータが格納されています。

PHPで2008-09-25を2008年9月25日というように表示したいのですが、どのような関数を使えばいいのでしょうか。

やりたいことは、本の発売日をphpのフォームからMySQLに格納して、2008年9月25日のように自由に整形表示したいです。

また、月別のデータ表示や日付の計算なんかもしたいのですが、このような場合、MySQL側をdate型にしないで他の型にしたほうがいいのでしょうか?

よろしくお願いします。

A 回答 (5件)

エンコードをETF8かEUCにするか、SJISで出力する場合、



$ddd = "2008-09-25";
$hen = strtotime("$ddd");
$dday = date("Y")."年".date("m")."月".date("d")."日";

としてやればどうでしょうか?
これなら大丈夫かと。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/10 06:05

MySQL


SELECT UNIX_TIMESTAMP(date型のカラム名) FROM テーブル名;

PHP
echo date('Y年m月d日', MySQLから取得した値);

日付の計算については、一度TIMESTAMPに変換してから行います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/10 06:05

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.h …

この回答への補足

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

補足日時:2008/09/25 23:34
    • good
    • 0

それで問題ないと思いますが、表示に使用する際などは、


文字コードに気をつけて、必要であればエンコードしてください。
    • good
    • 0

MySQLから、日付を持ってくるときに


date_format関数使ってしまえばいいと思うのですが、
形式がYYYY-MM-DDから変更できないなら、
explodeで分割してくっつければいいかと。

$data = "2008-09-25";
list($year, $mon, $day) = explode("-", $data);
echo $year . "年" . $mon . "月" . $day . "日";

この回答への補足

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

DATE_FORMATを使う場合は、DATE_FORMAT(hiduke,'%Y年%m月%d日')でselectすれば、

echo $row[hiduke];

で自動的に○年○月○日になるのでしょうか?

補足日時:2008/09/25 02:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!