• ベストアンサー

日付処理について

いつもお世話になってます。 環境はPHP5のMYSQLです。 DBに持っている登録日付から、ライセンスの期限を チェックするようなロジックを書きたいのですが 例えば変数や定数に「1」を与えたらDBの登録日から 1週間後、「2」なら2週間後のタイムスタンプを算出 するようなことは出来ますか? それから週単位ではなく、月単位や年単位など。 DBの日付は、タイムスタンプで持っています。 説明がちょっとうまくないので、足りないところは ご指摘頂ければ、補足します。 宜しくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

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

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

MYSQL側でINTERVALをつかってできる処理もありますし 受け取ったデータにたいしてstrtotime()して経過期間を足しこむこともできます。 ただし、月単位というはあいまいな定義です。 2/28の1か月後は3/28でしょうか?3/31でしょうか? 逆に3/31の1か月前は2/28でしょうか3/2でしょうか? そういう基本が理解できてないとかなり苦労すると思います。 またDB側でデータはタイムスタンプでもっているとのことですが datetime型の方がよくないですか?

TOBBYS
質問者

お礼

yambejpさん やっぱりstrtotime()を使うんですね! 近いような答えは出ていたのですが なんとか解決出来そうです^^ 月単位は閏年やらもあるし、ちょっと考慮 しなきゃならなそうなので、タイムスタンプから 差を算出して比較しようと思います。 ちなみにDB側は、datetime型でした。 色々、ありがとうございました。

関連するQ&A

  • 日付の比較方法

     お世話になります。  新規で日付を入力する際に、既にDBに存在している日付を入力するとエラーとなる仕組みを考えていますが、うまくいきませんので、助力をお願いいたします。 MySQLのDBにはDATE型にて日付が「2007-06-26」といった形式にて保存されています。 php上から日付の入力を行う際には、「20070626」と入力しています。  MySQLコンソール上では、「2007-06-26」と「20070626」は同じものとして扱ってくれますが、php上では違うものとして扱ってしまうらしく、比較を行うことができません    この数字を比較する手段が思いつきませんので、ご助力よろしくお願いします。 MySQL 5.0 PHP 5.2.1

    • ベストアンサー
    • PHP
  • 指定日付から90日後の日付を算出するには

    Perlの質問です。 登録日 2006/1/1 2006/2/10 2006/2/20 2006/3/15 の様なテキストファイルがあります。 このファイルを読み込んで、各レコードの値ごとに この登録日より90日後の日付を算出したいのですが、どのようなコードになるのでしょう。 ちなみに現在から何日後の日付を出すというサンプルは見つけました。 http://www.aimix.jp/cgi/accdatecnt.html しかしこれはtimeで現在日時を取り出して、それに何日間を秒単位にして加算するということなので、理屈はわかるのですが、いまいち今回のやりたいことに結び付けれません。 timeが1970年1月1日 00:00:00 から現在までの秒数を算出する関数ですから このように、先のリストの例でいうと、2006/1/1 00:00:00は、1970年1月1日 00:00:00 から何秒目なのかを算出できればなんとか出来そうなんですが・・・

    • ベストアンサー
    • CGI
  • MySQLの日付データについて

    PHPでMySQLから日付データを表示しようとしているのですが、日付フィールドの値をvarcharにしてしまいました。 このような状況下での質問なのですが、varcharフィールドに2006年1月1日と2006年2月1日と2006年11月1日がある場合、PHPで日付データを表示するとこのような順番で表示されてしまいます。 2006年1月1日 2006年11月1日 2006年2月1日 下記のようなカレンダー順の表示にするにはどのような方法があるでしょうか? 2006年1月1日 2006年2月1日 2006年11月1日 また、下記の質問と回答を拝見したのですが、日付データはタイムスタンプで処理するのが一般的なのでしょうか? http://oshiete1.goo.ne.jp/qa1396724.html その場合、フィールドタイプをDATEにしておいて、PHPからMySQLに書き込む際はどのような形式が正しいのでしょうか? 2006/1/1のまま書き込んでも自動的にタイムスタンプに変換してくれるのでしょうか。 最後に私のような初心者がMySQLを勉強する際にお勧めの書籍やウェブサイトなどありましたら是非教えて頂けると幸いです。 よろしくお願いします。

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

    ZendFrameworkについて PHP・ZendFramework初心者です。 今DBに登録した日付けを表示したいと思っています。DBはMysqlを使用しています。 DBに登録した内容は、"2010-08-20 16-00-00"です。 index.phtml----------------------------- : : <?php foreach($this->date as $time){ ?> <td><?php echo date('Y年n月j日'$time->times)?></td> <?php } ?> ---------------------------------------- 上記のように表示を指定してみると、 1970年1月1日になってしまいます。 原因がよくわかりません。 どなたかDBに登録した内容を上記のフォーマット通りに表示する方法を おしえてください。 よろしくおねがいします。

    • ベストアンサー
    • PHP
  • 時間差を求める

    PHPを使いDB(MySQL)に格納されている登録時間から、 そのデータを呼び出した時との時間差を求めようとしています。 表題の内容として今の考えでは、 格納されているTIMESTAMP型の登録時間をDBから読み込んだ後、 PHP側でそれをstrtotime()でUNIXタイム(※1)にし、 time()から※1を差し引き、その後date()等で整形・・・ と考えているのですが、どうも効率が悪いような気がします。 例えば、MySQLでクエリを送信する際に、NOW()関数などと組み合わせて、 そのまま時間差をデータとして変数に代入させて返すということはできるでしょうか? 投稿内容の時間として、ユーザのログイン情報として、ランキング登録時間として、 「○秒前」「○分前」「○時間前」「○日以上」といった表示を見かけますが、 そういうことをしたいと思っています。 簡略化できるのならば、MySQLのクエリ内の処理でもPHP側での処理でも構いません。 宜しくお願いします。 ----------------- 環境  PHP 5.2.5  MySQL 5.1.22

    • ベストアンサー
    • PHP
  • 取り出した日付の表示

    phpにてDBに格納されている日付データを取り出した際にデフォルトで "2007-06-04"のように表示されてしまいますが、これを "07/06/04"や"07.06.04"のように表示するにはどうすればよいのでしょうか? MySQLのフィールドタイプはdateに設定しています。 print date(Y/m/d,"$row["日付フィールド"]");とやるとなぜか、 "1970/01/01"と表示されてしまいます。 普通に、print $row["日付フィールド"]");とやると 2007-06-04と出てしまいます。 どうぞ宜しくお願いします。

    • ベストアンサー
    • PHP
  • 日付、時刻の比較について

    こんばんは。 現在、PHP4&MySQLの環境で業務アプリを 作成しております。 DBからDATE型(20060614)、TIME型(13:00:00)の データを取得して他の文字列と比較したのですが どうしてもうまく比較できません。 日付データはdate_format関数で使用して取得し strvar関数などで型変換をして比較しています。 ちなみにechoなどで実際の値を見ても同じ値でした。 やっぱり型があっていないのでしょうか? お願いします。

    • ベストアンサー
    • PHP
  • ファイルアップロード時のタイムスタンプ

    PHPで画像ファイルをアップロードした際、 ファイルのタイムスタンプが更新されてしまいます。 あとで、アップされたファイルのタイムスタンプをみて処理させたいのですが 、タイムスタンプ(作成日時、更新日時)を更新させないでアップロードする方法はありますでしょうか。 アップロードする前のタイムスタンプをあらかじめ取得し、DBなどに登録しておいたほうがいいのかもしれませんが、できれば画像ファイルのタイムスタンプを更新させないでアップロードしたいです。

    • ベストアンサー
    • PHP
  • PHP 日付操作

    PHPで動的サイトを作っている者です。 日付の操作で トピックスフォームの更新1週間内までの記事は New.gifイメージを表示させるような作りにしたいです。 日付のとり方が、20060831といったフォーマットです。 今のプログラムではただ単純に if((現在の時刻-記事登録日)< 7) といった分岐にしております。 しかし、今日発覚したのですが月をまたぐと 20060901-20060831になり差が70になってしまい New.gifが表れません。 上記を打開するいいロジックはございませんか?

    • ベストアンサー
    • PHP
  • DBにあるdate型の日付に関して

    お世話になっております。 MySQLへ登録されているdate型の日付($date = date("y-m-d");で登録)があるのですが、本日の日付と照らし合わせた際、1年以内であれば可。過ぎていれば不可。のようなスクリプトをif文を用いて...と考えているのですが、どういった関数が適しているのでしょうか? お恥ずかしい限りでは御座いますが、色々調べているものの、どれが適した関数かさえ分からず、ヒントだけでもご教授願えればと思っております。 お忙しい中恐縮ですが、宜しくお願い致します。 動作環境 php4.3 MySQL4.0

    • ベストアンサー
    • PHP

専門家に質問してみよう