人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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のまま表示はできているのですが、更に見やすくしたいと思っています。


●質問者: sun-chan
●カテゴリ:ウェブ制作
✍キーワード:2007年 23 4月23日 echo MySQL
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Mook
●100ポイント

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

<?
 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

◎質問者からの返答

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

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

なりたいです。

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


2 ● russian-blue
●30ポイント

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

◎質問者からの返答

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

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

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

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

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

またトライしてみます。

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


3 ● chuken_kenkou
●30ポイント

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 日付と時刻関数

◎質問者からの返答

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

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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ