- ベストアンサー
PHPでmysqlを使ってます。日時表示について
日付型に datetime を使ってます。 入っているデータは 2011-03-15 10:30:35 となってます。 これを、 2011/03/15(月) 10:30:35 と「/」区切りと日本語の曜日を入れた形に変えたいです。 strftime 関数かと思っておりますが、上手く表示することができません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
日本語の曜日は、自作するしかないかと思いますが、 ほかは、date関数かstrftime関数でいけると思います。 ただし、その前に、UNIXタイムスタンプに変換する必要がありますが。 たとえば、 $a = strtotime("2011-03-15 10:30:35"); $week = array("日", "月", "火", "水", "木", "金", "土"); $b = date("Y/m/d(",$a). $week[date("w",$a)] . date(") H:i:s", $a); echo $b; で 2011/03/15(火) 10:30:35 となります。
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
まず、MySQLの日付、時刻、日時のデータ型は、MySQLの独自の内部形式で保存されており、phpの日時の形式とは異なることを理解してください。 MySQLの日付、時刻、日時は、MySQLにより、文字の日付や時刻の形式('yyyy-mm-dd'や'hh:mm:ss'など)と内部形式で自動的に型変換します。 したがって、phpで受け渡しする場合は、文字の形式でやり取りすることになり、php側では単に文字連結するといったことを行えばいいです。 また、MySQLでは、日付や時刻に +0することで、数値でyyyymmddといった値で得ることも可能です。 以下、SQL例を示します。 drop table if exists t1; create table t1 (id int primary key auto_increment ,dt datetime ); insert into t1 values (null,'2011-03-30 12:00:00') ,(null,'2011-03-31 18:30:00') ,(null,'2011-04-01 00:00:00') ,(null,'2011-04-02 09:00:30') ,(null,'2011-04-03 00:15:00') ,(null,'2011-04-04 00:00:00') ,(null,'2011-04-05') ,(null,'2011-04-06') ,(null,'2011-03-29') ; select id ,date_format(dt,'%Y/%m/%d') as yyyymmdd ,elt(dayofweek(dt),'日','月','火','水','木','金','土') as youbi ,date_format(dt,'%T') as jikoku ,concat(date_format(dt,'%Y/%m/%d') ,'(' ,elt(dayofweek(dt),'日','月','火','水','木','金','土') ,')' ,date_format(dt,'%T') ) as hensyugo from t1 order by id ; 以下、マニュアルの参照先です。 MySQLの日付や時刻の関数 http://dev.mysql.com/doc/refman/5.1/ja/date-and-time-functions.html MySQLのELT関数 http://dev.mysql.com/doc/refman/5.1/ja/string-functions.html なお、今回は丸投げ質問に対し回答しましたが、今後は (1)MySQLのバージョンを明記 MySQL 4.1、MySQL 5.0、MySQL 5.1といったレベルまでは最低限で。 大きな機能追加や一部の仕様変更があります。 (2)phpのバージョン (3)自分なりに調べたり、試行錯誤して、どこが分からないのか具体的に提示 を提示するようにお願いします。
お礼
丁寧なご回答ありがとうございます。 勉強になりました。 お手数掛けてすみません。