• 締切済み

MySQLのTIME型データをPHPで表示変更したいです。

PHPとMySQLで、時間情報の取り扱いを試しています。 まず、MySQLにはTIME型で「10:00:00」などの時刻情報を格納しています。 それを、PHPでSELECTしてHTMLの中に表示したいのですが、 その際、2つの点でうまくいかずに困っています。 1 PHPでHTMLの中に表示するときには、「時」と「分」だけの、「10:00」の形式で表示したいのですが、方法がわかりません。 (いくつか関数を試しても、どれもTIMESTAMP型を扱うものでした) 2 例えば、「4時」のデータの場合「04:00:00」となりますが、これを「4:00」のように語頭の0を削って表示したいです。 おそらくどちらもMySQLに格納する方法を文字列型にすればいいのかとも思うのですが、SELECTの際に現在時刻との比較(現在時刻より早いか遅いかなど)を行いたいので、それができません。 何かいい方法がありましたら、教えて頂ければありがたいです。 

  • PHP
  • 回答数2
  • ありがとう数5

みんなの回答

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.2

たとえば、そのTIME型のカラムがテーブルmytableのmytimeと言うカラムだったとします。 SELECT DATE_FORMT(mytime, '%p %l:%i') AS timeinstring FROM mytable; みたいに書けば、timeinstringと言うカラム名で持ってこれます。 上の例だと、AM 5:09 というような形になります。

ganba1980
質問者

お礼

ご丁寧にありがとうございます! やり方がよくわかりました! SQLをもっと勉強する必要があるなと反省しました。

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.1

日付、時刻型はRDBMSでは、文字型で持つのは避けたいですね。で、SELECTの結果で文字型に編集できればいいんですよね。 DATE_FORMAT()関数を使えば、いいかと。 参考URLのDATE_FORMATを参照してください。

参考URL:
http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.html
ganba1980
質問者

お礼

ご回答ありがとうございます! MySQL側での処理というのは考えなかったですね。 これは、PHP側でクエリとして実行するのでしょうか?

ganba1980
質問者

補足

ご回答ありがとうございます! MySQL側での処理というのは考えなかったですね。 これは、PHP側でクエリとして実行するのでしょうか?

関連するQ&A

  • mysql,google maps api、php

    php、mysql、google maps apiを使ったウェブサイトを作成したいと考えています。 php→mysqlの段階まではクリアできていますが、mysql→google mapのプロセスで妻づいているため、このカテゴリで質問させていただきました。 phpを使ってmysqlに緯度経度等の情報を格納し、格納された情報google mapに反映(mysql内の各情報についてmap上にマーカーを付ける)させた上で、サイト上に表示させることは可能でしょうか? phpからmysqlへ情報を格納するところまでは実際に作ってみてできたのですが、mysqlの情報が付加されたgoogle mapをサイトに表示させるところがどうしてもわかりません。 ヒントになるようなサイト等ありましたら教えていただけないでしょうか?

  • mysqlとphpでのデータ表示について

    この度、 mysqlとphpで野球チームのデータ管理サイトを作成しようと思っています。(javascriptも使用予定) お恥ずかしいですが当方の知識としてはmysql+phpの入門書を2週間読んだ段階です。 そこで質問です。 ---------------------------------------------- 例えば、打率を表示したい場合、 計算式は 安打数/打数 ですが、 mysqlで、a(打数)、b(安打数)、c(打率) というカラムがあった場合、 cには (1)mysql上で計算値をinsertするのでしょうか? (2)それともphpスクリプトで計算値をHTMLに吐き出すのでしょうか? ご教授願います。 できれば簡単でいいので手法を教えていただけたらと思います。

    • ベストアンサー
    • MySQL
  • phpでmysqlからデータを取り出して一覧表示

    phpでmysqlからデータを取り出して一覧表示させるプログラムを造りたいのですが、どうもうまくいきません。まずはデータの取り出し表示の仕方を教えてください。 $sqlstr="select * from webdiary where username=$id order by topicid asc"; $result = mysql_query( $sqlstr ); この後どのようにしたらよいでしょうか?

    • ベストアンサー
    • PHP
  • PHPでMySQLのデータを読み込んだ際の文字化けについて

    宜しくお願いいたします。 PHPからMySQLのデータを参照して、HTML上に文字を表示させたら、文字化けしてしまいます。具体的には ・・・ログインIDとパスワードを送信して、その情報をMySQL上のデータベースで参照し、そのレコードにあるユーザー名をHTMLで表示する・・・ といった事を行います。ログインIDはURLからGETで送って、パスワードはPOSTで送っています。送られてきたIDとパスワードで、 <?php $userlist = mysql_query("select * from テーブル名 where id = '$ID' and password= '$password'",${接続ID}); $user = mysql_fetch_array(${userlist}); ?> といった形で『$user』にレコードを配列として代入して、HTML上の必要な箇所で、 <?php print "${user['name']}" ?> といった形でそのIDとパスワードのユーザー名を表示しています。ところが、実際にブラウザで表示させると、データベースには 『アドミニストレーター』 とカタカナで入力しているのですが、HTMLでは、 『・「・ノ・゜・ヒ・ケ・ネ・・シ・ソ。ン』 と化けて表示されます。 HTML上の文字などは特に化けていません。データベースから抽出した文字だけが化けてしまいます。 どなたか、この現象を解決するヒントを教えて下さい!お願いします!!

    • ベストアンサー
    • MySQL
  • MySQL TIMESTAMP型は、UTCですか?

    MySQL5で、 TIMESTAMP型のカラムに格納されるのは、UTCでしょうか。 それともローカルタイムゾーンなのでしょうか? あるいは、設定による、のでしょうか? >TIMESTAMP カラムの値は、ストレージでは現在のタイム ゾーンから UTC へ、読み出しでは UTC からカレントのタイム ゾーンに変換します。 http://dev.mysql.com/doc/refman/5.1/ja/time-zone-support.html と書いてあったのを見て、TIMESTAMP型のカラムに格納されるのは、UTC(日本時間-9)だ、と思ったのですが、 実際にカラムの中を確認してみると、その時点の日本時間が格納されています。 >TIMESTAMP 値は、現在のタイムゾーンから変換されて格納され、また検索された時に現在のタイムゾーンに再変換されながら、UTCに格納されます。 http://dev.mysql.com/doc/refman/5.1/ja/timestamp-4-1.html こちらでも、「UTCに格納されます」って書かれているのですが、 これは、「現在のタイムゾーンをそれぞれの接続ごとに設定した場合」に限っての話なのでしょうか? それとも、ストレージでは、って書かれているので、 ストレージのことが絡んでいるのでしょうか?(ストレージって何のことですか)

    • ベストアンサー
    • MySQL
  • PHP MySQL epoch fromについて

    PHP5.1.6 MySQL5.5 PostgreSQLからMySQLへの移行作業を行っているのですが、以下のSQLをMySQL用に変換したいと思っています SELECT (case when (volume + floor(extract(epoch from (current_timestamp - check_time)) / 900)) < volume2 then (volume + floor(extract(epoch from (current_timestamp - check_time)) / 900)) else volume2 end) as volume FROM table MySQLにPostgreSQLのepoch fromに当たる関数はありませんでしょうか?

    • ベストアンサー
    • MySQL
  • phpとmysqlの初心者の疑問

    すいませんphpとmysqlの処理のしくみがわかってないです phpの処理の中でmysqlからSELECTで値を取得する場合 mysqlが大量のデータで処理に時間がかかった場合は、SELECTの処理に5秒くらいかかっても、phpの処理の中でそこで待ってくれているんですか? SELECTの処理が何秒かかったとしても終わってから次のphpの処理にいっているんですか? phpって速いのにmysqlのスピードが遅かったらちゃんと読み込まれないんじゃないかと心配になっています

    • ベストアンサー
    • MySQL
  • php,mysqlにて画像パス保存/表示につい

    mysqlに画像パスを格納しておき、phpでブラウザに表示するという部分について質問があります。 以前画像を扱った際は、DBにそのまま画像データを格納していたのですが、一般的ではないということで画像パス使う方針にしました。 画像パスはthumbnailというカラムにvarcharで画像パスを格納しました。 今回ご相談させていただいた件では、主に画像の表示の部分にアドバイスをいただければと考えています。 以前画像をそのまま保存し表示するときは、get_image.phpのようなファイルを噛ませ、それをブラウザに読み込ませることで表示していたのですが、画像パスでも同じようなやり方でいいのでしょうか? ネットで調べてみたのですが、何となくしっくりこないというか、私の誤解もあるかもしれないのですがすっきりせず迷走中です。 どうか、アドバイスをご教示いただけないでしょうか。 ※以下は、試しにget_image.php噛ませてみた際のコードです。 <?php $id = $_GET['id']; //DB接続 ~省略~ $sql = "SELECT image FROM テーブル名 WHERE id='$id'"; $result = mysql_query($sql); if (!$result) { echo ("SQLの実行に失敗しました<BR>"); echo(mysql_errno().": ".mysql_error()); exit; } $row = mysql_fetch_array($result); mysql_close($con); $img_path = '$row['image']' $img = file_get_contents($img_path); header('Content-type: image/jpg'); echo $img; ?>

    • ベストアンサー
    • PHP
  • mysql、phpを使ってデータがあるときだけ表示させたい

    mysql、phpを使ってデータがあるときだけ表示させたい 初歩的な質問で恐縮です。 mysql、phpを使ってデータがあるときだけ、それを表示させたいと思っています。 ------------------------------------------------------------------- データベース ↓↓ name        blog      クリリン    http://www.111.jp  ヤムチャ    http://www.222.jp ブルマ ------------------------------------------------------------------- ------------------------------------------------------------------- 表示させたいこと ↓↓ クリリン  クリリン公式ブログ(リンク) ヤムチャ  ヤムチャ公式ブログ(リンク) ブルマ ------------------------------------------------------------------- ------------------------------------------------------------------- 実際にソース組んでみたやつ (何も出てこなかった。。クリリンの場合) $blog_sql = "select blog from ****"; $res = mysql_query($blog_sql); $blog = mysql_result($res,0); if ($blog > 0 ) { echo "<p><a href=\"$blog\">クリリン公式ブログ</a></p>"; } ------------------------------------------------------------------- です。 ソースの部分は若干はしょってありますが、 ifを使わないでやるとちゃんと表示されるので、細かいところは問題ないはずです。 ただ、ifを使わないとブルマの項目にも「ブルマ公式ブログ」とリンクURLが入っていない状態で出てしまうので、ブログURLが入っていないものを表示させたくない、というものです。 何かご不明な点などあればおっしゃってください! よろしくお願いします!

    • ベストアンサー
    • MySQL
  • PHPとMySQLについて

    PHPとMySQLについて PHP、MySQLともに初心者の者です。 ネットの情報を参考に以下のようなプログラムを作成しました。 <?php //ファイルを読み込み require_once("DB47.php"); // クエリを送信する $sql = "SELECT * FROM japanDB ORDER BY PREF_CD"; $result = executeQuery($sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //表示するデータを作成 if($rows){ while($row = mysql_fetch_array($result)) { $tempHtml .= "".$row["PREF_CD"]." ".$row["PREF_NAME"]." "; $tempHtml .= "\n"; } $msg = $rows."件のデータがあります。\n\n"; }else{ $msg = "データがありません。\n\n"; } //結果保持用メモリを開放する mysql_free_result($result); ?> <?= $msg ?> <?= $tempHtml ?> これはデータベースに 1、北海道 2、青森 ・  ・ ・  ・ ・  ・ 47、沖縄 といった情報を与えており、PHP側でMySQLに接続し、その内容をコマンドプロンプト上で表示するといったものです。 しかし、PHPプログラムを実行してしまうと、全データが一気に表示されてしまうので、見づらいものとなっています。 そこで、地名や番号を入力すれば、地名を表示するような検索機能を付けたいのですが、PHPからMySQLデータベース内を検索する方法が分かりません。検索機能をこのプログラムに組み込みたいのですが・・・。 どなたかご教授お願いいたします。 ***環境*** OS : Windows XP Pro PHP4.2.3 、MySQLインストール済み **********

    • ベストアンサー
    • PHP

専門家に質問してみよう