• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php mysql 時間の足し算他)

PHP・MySQL初心者が予約システムを作成する際の質問

このQ&Aのポイント
  • PHP・MySQLの初心者が予約システムを作成するにあたり、時間の足し算や型に関する疑問があります。時間に関係するカラムの型について説明し、時間の比較や足し算の方法についても質問しています。お力をお貸しください。
  • 予約時間のテンプレートを作成するため、時間に関係するカラムをtime型としました。time型では10:00:00のように秒まで含める必要があるのか、具体的に知りたいです。また、指定した時間とデータベースのカラムの値が一致するレコードを取得する方法についても教えてください。
  • 予約時間と施術開始時間の関係を算出したいです。予約時間の30分後が施術開始時間になる場合、どのように計算すれば良いのか知りたいです。初心者のため要領を得ない質問ですが、お力をお貸しください。

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

#もっぱらMySQLの話ですね(汗 MySQLでの取り扱いに関しては、まずはMySQLのマニュアルを読んでください。 http://dev.mysql.com/doc/refman/5.1/ja/time.html 「'HH:MM:SS' フォーマットで検索、表示」するので、where条件で書くときは直接文字列型と比較してもいいですし、(日付時刻関数の)date_formatで任意の形式の文字列にしてから比較してもいいです。またMySQL側で時間の計算をするなら、同様に日付時刻関数で行えます。 ・select * from DB where rsvTime = '10:00:00' ・select * from DB where date_format(rsvTime, '%H%i)' = '1000' http://dev.mysql.com/doc/refman/5.1/ja/date-and-time-functions.html ・select addtime(rsvTime, '00:30:00') as startTime from DB

hayaken73
質問者

お礼

すばやいご回答ありがとうございます。 またご丁寧に解説も加えていただき勉強になりました。 (sql側で色々できるのは初めて知りました。) 知識不足のため参考URLは自力で読み解く事はできません でしたが、参考にさせていただきながらゆっくり紐解いて いこうと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

失礼しました テンプレについてはtime型でよいと思います 実際の予約データをdatetimeで管理すればよいでしょう。

hayaken73
質問者

お礼

アドバイスありがとうございます。 少しづつですが、形が見えてきた気がします。 作りこむ程にさらに疑問が出そうですが、その際 お暇ならまたアドバイスをいただけたらと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

予約システムをつくるならデータはdatetime型がよろしいのでは? datetime型のカラムであれば、「カラム+interval 30 minute」的な 直観的な書式も利用できます。

hayaken73
質問者

お礼

参考になる知識ありがとうございます。 [カラム+interval 30 minute] 何やら非常に使えそうな感じはしますが、どのように 使うのかが。。。勉強していかないとです。 ご回答ありがとうございました。

hayaken73
質問者

補足

予約候補時間のテンプレートとしてのカラム(予約時間)だとしても 型はdatetimeなのでしょうか? つまり、あるコースの予約は毎日10:00と12:00と15:00だと する場合に、この時間には日付の概念はないのですが、これらを収めるカラムの 型がdatetimeの型でできるのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 時間の比較(sql)

    予約システムの時間を管理するような部分の記述がわかりません。 時間を比較するにあたり、ある値から1時間引いた値を利用したい ですが、その1時間を引くという記述がわかりません。 以下の5行目の一番最後の部分はどう記述したら良いですか? 1: "select *from 2: timeTpl as t left join booked as b 3: on t.bookTime>=b.rsvTime and t.bookTime<b.finishTime 4: && 5: t.bookTime<b.rsvTime and t.bookTime<'b.rsvTime - 01:00:00' 6: where b.rsvTime is not null";  ↑ うまくうごきません。 [db] ・timeTpl : 予約時間の候補を納めたテーブル   (ex.10:30,11:00,11:30,12,00・・・・) ・booked : すでに予約済みのデーターを収めたテーブル (予約時間rsvTime=(来店時間)、矯正時間startTime、矯正終了時間finishTime) ※時間の関係する部分は"time型"となってます。 ちなみに最終的に行いたいことは・・・ コースごとに取得できる予約時間が決まっています。(timeTpl) 予約時間の30分後から矯正が始まり、その1時間後に終了します。 timeTpl(予約候補時間)の中から、予約可能なものだけを表示したい。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 時間の足し算

    アクセスで時間の足し算をやりたいのですが なかなかうまくいきません 08:03:00とテーブルにテキスト型でデータがあり、 これに1分足したいと思います クエリでさせたいと思いますがどなたか教えていただけないでしょうか? もしくはVBやSQLでもかまいません

  • 予約可能時間の出し方

    php独学(数ヶ月)の初心者です。 予約を管理するプログラムを自分でつくっています。 調べても調べてもどの関数をどのように使えば 良いかわからないまま数日がたってしまいました。 (初心者のため知らずに勉強し始めてしまった非推奨のmysql関数等を とりあえずまだ使用しています。mysql関数で教えていただければと思います。 ある程度理解を深めた時点できちんと勉強しなおします) ■予約の概要 コースごとに取得できる予約時間が決まっています。 予約時間の30分後から矯正が始まり、その1時間後に終了します。 (予約時間に来店、30分間マシーンに乗り、その後先生の矯正が 1時間ある。) ■作成したDB [DB01]予約時間テンプレート:time1 コースごとに取得できる予約時間が決まっています。 (以下はあるコースの予約可能時間のテンプレです。) id, time(time型) 1,10:15 2,11:45 3,14:30 4,16:00 5,17:30 6,19:00 [DB02]予約済みを貯めたDB:booked (時間はすべてtime型) id,name,time,start,finish,course 203,tanaka,10:00,10:30,11:30,a 101,abe,14:30,15:00,16:00,a 112,yoshida,17:00,17:30,18:30,c ■質問 [DB01]のうち予約可能な時間のみ<select>文で表示させたい。 ちなみ(予約可能な時間)は、11:45,16:00,19:00の3つです。 色々考えましたが、今の自分の実力では上記を実行させるコードが断片的に しか分からずお手上げとなりました。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • PHPにおける時間計算、時間足し算に関して

    PHPを用いた時間の足し算方法についてお教えいただきたくお願いします。 12:30:00 (時間、時刻ではない)+ 12:30:00が25:00:00と表示されるようにしたい。 例えば、日ごとの勉強時間○○時間△△分□□秒を特定の日にち間での総勉強時間を算出しようとして、以下のようにコーディングしました。 なお、下記におけるleave,enterは開始時刻(HH:MM:SS)、終了時刻の文字列をstrtotime関数を用いて時刻変換したものを用いています。 24時間以内であれば、問題なく表示されるのですが、1日(24時間)以上の数値となると日にち分の時間(24、48時間等)が引かれた値が出力されます。dateの書式によるためと思われますが、36:50:30(現在の出力は12:50:30)と単純に足し算の結果を出力させるためにはどのようにコーディングすればよろしいでしょうか? よろしくお願いいたします。 $sum = 0; for($i=0; $i<$k; $i++){ $time_diff[$i] = $leave[$i] - $enter[$i]; $sum = $sum + $time_diff[$i]; } $sum = $sum + strtotime("0:0:0"); //localtimeを補正 $sum = date("H:i:s",$sum); print("累積時間:" .$sum. "<br>"); 場合にとっては総時間を秒で求める方法をご教示いただいても結構です(割り算で時間、分、秒として出すこともできますので)。

    • ベストアンサー
    • PHP
  • MySQL 文字化けについて(PHP)

    いつもお世話になっております。 PHPを使用してMySQLからデータを出し入れする際に文字化けが発生し原因がわからず、大変困っております。 MySQL 4.1.18(クライアント 4.1.21) MySQL文字セット UTF-8 Unicode (utf8) 様々なHPを検索して、下記のような一文を入れれば大丈夫と思ったのですが、それでも文字化けは改善されませんでした。 mysql_query("SET NAMES ujis"); 上記文はmysql_connectの直後に記述しております。 INSERT文、SELECT文どちらに不備があるのかわかりません。 ご教授お願い致します。 記述プログラム:(INSERT文) /********************************* * MySQL接続 ********************************/ // DB Connect $db = db_connect(); // DB Select select_db($db); // Set Names mysql_query("SET NAMES ujis"); /********************************* * INSERT文 ********************************/ $sql = "insert into T_YOYAKU values ('1','A','1','あいうえお')"; mysql_query($sql) 省略・・・ 記述プログラム:(SELECT文) /********************************* * MySQL接続 ********************************/ // DB Connect $db = db_connect(); // DB Select select_db($db); // Set Names mysql_query("SET NAMES ujis"); /********************************* * INSERT文 ********************************/ $sql = "select * from T_YOYAKU"; if ( $rs = mysql_query($sql) ) {

    • ベストアンサー
    • MySQL
  • PHP+MySQL 時間の比較がしたい

    PHPとMySQLでメルマガ送信システムをつくっています。 会員登録時にメルマガ配信希望時間を選択してもらい、DBにtime型でインサートしています。 [member]テーブル mail        fromtime  totime --------------------------------------- aaa@aa.co.jp   10:00:00  18:00:00 bbb@bb.ne.jp   01:00:00  12:00:00 ccc@cc.ne.jp   22:00:00  06:00:00 管理者がメルマガを送信の際、配信時間内に該当する会員だけにメールを送信させたいのですが、配信時間に該当する会員の抽出が上手くいきません。 SQL文での抽出: SELECT * FROM `member` WHERE (`fromtime` <= `$sendtime`) AND (`$sendtime` <= `totime`); ($sendtimeはdate関数で取得した送信時間が入っています) PHPでの処理:fromtime,totime,$sendtimeに今日の日付を追加して、タイムスタンプに変換して比較演算子を使うことを検討しましたが、日をまたぐこともあるので、そこで行き詰ってしまいました。 SQLでもPHPでもいいので、正確に配信時間内に該当する会員データを抽出できる方法はありませんでしょうか? どうかご教授お願い致します。

    • 締切済み
    • PHP
  • MySQLでデータを時間範囲で抽出したい

    mysqlでテーブルから、日付データが1ヶ月以内でかつ7時から8時までのデータを抽出する方法がわかりません。 テーブル内のtimeカラムにはタイムスタンプ型で日付が入っています。 time「2012-06-04 07:14:38」 time「2012-05-04 10:14:38」 time「2012-05-04 08:14:38」 time「2012-05-04 13:14:38」 SELECT * FROM table WHERE time >= DATE_ADD(NOW(),INTERVAL -1 MONTH) で1ヶ月以内のデータは抽出できたのですが、さらに7時から8時までのデータを抽出する方法が分からずかなり困っています。 どなたかご教授お願いいたします。

  • 時間計算について

    社内タイムカードWebを作成する事になりまして Time型データ(日付無しデータ)の計算について困っています。 $a = 08:59:11 #出社 $b = 17:32:02 #退社 計算したい値:労働時間 08:30:00(10分単位で計算) 日付付のデータであればいくつか関数があるようですが、時間のみの計算については、見つかりませんでした(泣き 又、月末の総労働時間(160時間等)の足算方法等 何卒どなたかご教授ねがいます

    • 締切済み
    • PHP
  • PHP+MySQLで、日時を比較して抽出したい

    お世話になります。 現在、以下のようにテーブルにデータが入っているとします。 そこで、発生時間から30分経過したものを抽出するとき、どのようにSQL文を書けばいいのかずっと悩んでいます。 ただし、未回復のときは、回復時間のカラムにデータは入っていません。 DB名:サンプル テーブル名:テーブル 名称、発生時間、回復時間 (A、2005/08/10 10:10:10、2005/08/10 18:10:00) (B、2005/08/11 11:15:00、) (C、2005/08/13 22:50:18、2005/08/15 20:00:01) (D、2005/08/13 22:50:19、2005/08/13 23:00:00) Bは現在も、継続して発生中。 この中で30分以上継続しているものを抽出すると、 いろいろ考えたのですが、抽出する条件は ・回復しておらず、発生時間から30分以上経過しているもの ・回復時間から発生時間を引いて、30分以上の差があるもの だと思います。 ※指定する時間(30分経過等)は、30分の他に1時間経過、1日経過とか、選択できるようにしますが、わかりやすいように30分経過したもののみ扱うこととします。 わかりづらい質問で申し訳ありません。よろしくお願い致します。

    • ベストアンサー
    • PHP
  • Accessで所要時間の足し算

    アクセスで勤務時間の月間集計をするデータベースを作っています。 毎日の勤務を30分単位で、1時間30分なら「1.30」1時間なら「1.0」と入力していき月間の総時間を集計するのですが、当然のことながら普通に足し算すると、仮に「1.30」が4日なら合計「5.2」になってしまいます。これを「6時間(6.0)」と計算させたいのです。 日々の入力の形式は、1時間30分なら「1.30」という形で入力しなければならない事情があり「1.5時間」という形式はとれません。いろいろ試したのですがうまくいかず困っています。このような事は可能でしょうか