MySQLとPHPを使った日付表示についての質問です。


MySQLに、id (1,2,3…連番)とdate(2007-04-21,2007-04-21,2007-04-22,2007-04-23…必ずしも連日ではない)がある場合、このdateのフィールドから、日付を呼び出して、phpで

2007年4月23日(月)

と表示するにはどうしたらいいのですか?

$sql = "select * from update_test order by id";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);

として、echo $row["date"];で、2007-04-23のまま表示はできているのですが、更に見やすくしたいと思っています。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2007/04/24 13:38:09
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント100pt

いろいろやり方があると思いますが、関数にしておいてこれを呼び出すようにしてみてはどうでしょうか。

<?
    printDate( '2007-4-23' );

// 表示用の関数を定義
function printDate( $dd ) {
    // 曜日の配列:0 ・・・日曜   6・・・ 土曜
    $wday = array( "日", "月", "火", "水", "木", "金", "土" );
    // - で日付を分割
    $dArray = explode( "-" , $dd );
    $stamp = mktime( 0, 0, 0, $dArray[1],  $dArray[2], $dArray[0] );

    // printf で整形して表示
    printf("%d年%02d月%02d日(%s)\n",
        date( "Y", $stamp ), date( "n", $stamp ), date( "j", $stamp ), $wday[date( "w", $stamp )] );
}
?>

PHP mktime

id:sun-chan

Mookさんのやり方でできました!(T_T)

しっかり勉強して自分でも書けるように

なりたいです。

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

2007/04/24 12:57:37
id:russian-blue No.2

回答回数36ベストアンサー獲得回数0

ポイント30pt

SQLを変更してymdカラムを追加

$sql = <<<_SQL_</p>

select

concat(

DATE_FORMAT(date,'%Y年%m月%d日('),

case dayofweek(date)

when 1 then '日'

when 2 then '月'

when 3 then '火'

when 4 then '水'

when 5 then '木'

when 6 then '金'

when 7 then '土'

end,

')'

) as ymd,

* from update_test order by id

_SQL_;

$result = mysql_query($sql);

$row = mysql_fetch_array($result);

echo $row['ymd'];

http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.h...

id:sun-chan

このやり方では、どこか違ったのかまだ私の

レベルではできなかったです。

ただ、私のやり方が悪いだけで

russian-blueさんの回答は合っているのだと

思うので、もうちょっとMySQLの勉強をしてから

またトライしてみます。

ありがとうございました!

2007/04/24 12:59:26
id:chuken_kenkou No.3

回答回数722ベストアンサー獲得回数54

ポイント30pt

php側で日付を編集するのでなく、MySQL側で編集してしまい、その結果を受け取る方法もあります。

検索結果を編集するだけなので、MySQL側での性能には、殆ど影響しないと思います。

-- 表定義
create table update_test
(id       int,
 `date`   date);
-- テスト用データ格納
insert into update_test values
(1,'2007-04-21'),
(2,'2007-04-22'),
(3,'2007-04-23');
-- 検索
select
 id,
 date_format(`date`,
             concat('%Y年%c月%e日(',
                    elt(dayofweek(`date`),'日','月','火','水','木','金','土'),
                    ')')) as `date`
 from update_test order by id;

MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.3.4 日付と時刻関数

id:sun-chan

こちらの方法も試してみたのですが、phpから

MySQLを操作するのがまだよく分かっていないので

うまくいきませんでした。

もう少し勉強してからこの方法でもまたトライしてみますね。

ありがとうございました!

2007/04/24 13:00:08

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません