• ベストアンサー

DBにあるdate型の日付に関して

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

  • PHP
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

1年以内に登録したデータを取得する、でいいんですよね・・・? $date = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y')-1)); $sql = "select * from test_tb where tourokubi >= '$date'"; $result = mysql_query($sql); でダメですか? 全件取得してからifで判定、などという事はしません。

sadacha
質問者

お礼

tany180sx様 こんばんは。早速のご回答を有難う御座います。 ごめんなさい。またまた説明不足だったようです(汗)。 例えで言うと、データを取得した際、データ登録から1年以内であれば、登録データの「表示」。1年以上経っていたら、「期限超過」の表示。データそのものが無かったら、「登録データがない旨を表示」。と、このような流れを考えています。 本当、言葉足らずですみません。 初心者の私として、今回のtany180sx様からのアドバイスは、今後の幅が広がったと感謝しているところですが、今一度、上記の流れに関してアドバイス頂ければ幸いです。 これまでのアドバイスにもヒントがあるようで、色々と試してはいるものの、上手く行く事が出来ずにおりまして・・・宜しくお願い致します。

sadacha
質問者

補足

tany180sx様 こんばんは。補足欄から失礼いたします。 ない頭を使いつつ、なんとか目的の動作をさせることに成功しました。 ご親切なアドバイスに感謝しております。とても貴重なヒントとなりました。 今後とも宜しくお願い致します。有難う御座いました。

その他の回答 (2)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

日付をPHPで統一しているかDBで統一しているかにもよりますが、 PHPなら $date = date('Y-m-d', strtotime(date('Y-m-d') . '- 1 year')); $date = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y')-1));

sadacha
質問者

お礼

tany180sx様 こんにちは。お世話になっております。#1のyambejp様同様、ご親切なアドバイスに感謝しております。 ところで、yambejp様へのご挨拶でも述べたのですが、tany180sx様からアドバイスいただいた関数を用いても上手く行かず、自分の記述ミスなのか、tany180sx様もご指摘のように、不適切なものなのか?が分からず戸惑っております。 これも勉強不足が故とは思っておりますが、今一度ご指導頂けたら幸いです。

sadacha
質問者

補足

すみません。肝心なことをお伝えするのを忘れてしまいました。 DBへデータを登録する際のコード mysql_connect('localhost','root','******'); mysql_select_db('test'); $hiduke = date("y-m-d"); $sql = "insert into test_tb values(0, '$hiduke', ……);//DBのフィールド名は、tourokubi mysql_query($sql); で、登録したdateをPHPで呼び出す際、現在の日付と比較したいと考えています。

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

>本日の日付と照らし合わせた際、1年以内であれば可。 >過ぎていれば不可。のようなスクリプトをif文を用いて >...と考えている 可・不可という言い方がよくわかりません。 それはデータを登録しないというとでしょうか? それを実現するスクリプトとは外部言語のことをいっていますか? それともSQLでやりたいのですか? あるフィールドが今日より一年以内の場合に表示する (過去一年分のデータを表示する)なら SELECT * FROM `テーブル` WHERE `dateフィールド`>subdate(curdate() , interval 1 year)

sadacha
質問者

お礼

yambejp様 こんにちは。お世話になっております。 親切な回答を有難う御座います。 私の質問、説明不足でした。 DBへ保存する際、下記のようなスクリプトで保存しているのですが、PHPにてブラウザから登録データを表示させるとき、登録日から1年以上(もしくは1ヶ月以上、10日以上)経過しているデータは、非表示にするようなコードを考えておりました。 なので、if文を用いてコードを書くとしたら,,,,,と、考えておりました。 今回、アドバイスいただいたコードを見て「なるほど,,,」とは思ったもの、上手く行かず、単に記述したコードが可笑しいのか?それともyambejp様がご指摘のように不適切なものなのか?が正直分からなくなってしまいました。引き続きアドバイスなど頂けたら幸いです。

関連するQ&A

  • DB登録に関する日付の認識

    はじめまして、こんばんは。分からないことがあり質問させていただきます。 現在、PHPにてMySQLへアクセスログを登録するものを作成しており、同じ日付に複数訪れた人は、最終日時。はじめて訪れた人はその日時を登録したいのですが、登録(または更新)する際、データベースに設定のdateカラム(datetime)を参照したとき、同じ日付をどう判別するのか?が分かりません。 以上のことから、これまで年月日のみをdateカラムに登録していたのですが、時間も登録したく考え、改め見直しているのですが、時間までをも登録した場合の日付の判別が分からないのです。 お恥ずかしいとは思うものの、現在の登録スクリプトは、 $y = date("Y"); $m = date("m"); $d = date("d"); $date = $y.$m.$d; $sql = "insert................ それを、 $date = date("Y-m-d H:i:s"); で登録したいと考えております。 お忙しい中恐縮ですが、ご指導いただければ幸いです。

    • ベストアンサー
    • PHP
  • 土日をカウントしない日付表示

    PHPで日付の表示方法で困っています。 今日から3日後の日付を表示するときに土日を含まないで表示させたいのです。本日12日ですので17日が表示されるようなPHPをご教授いただきたいです。 <?php echo date("m月d日",strtotime("+3 day"));?> だと単純に3日後ですし、 <?PHP $day = 60 * 60 * 24; $t=mktime(0,0,0,date("m"),date("d")+3,date("y")); if(date("w",$t)==6) $t += $day * 2; if(date("w",$t)==0) $t += $day ; echo date("m月d日",$t); ?> だとしても土日をカウントしているので、思うような結果に至っておりません。 よろしくお願いします。

    • ベストアンサー
    • 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
  • DATE()の日付けの固定について

    Date関数の特性として明日になれば明日の日付に自動的に更新されてしまいます。 これをどうにかして「自動的に本日の日付が入るがそのままその日付を更新しない」 という設定にすることはできないでしょうか? Q&AでACCESSがありましたが初心者でACCESSがわかりません。 これを使わずにする方法はありませんか。

  • javascriptでの日付更新の時間について

    初歩的なことですいませんが・・・ Javascriptについてご教授ください。 以下のような日付を表示するJavascriptがあります。 <SCRIPT LANGUAGE="JavaScript"> <!-- date = new Date(); y = date.getFullYear(); m = date.getMonth() + 1; d = date.getDate(); if (m < 10) { m = "0" + m; } if (d < 10) { d = "0" + d; } document.write(y + "/" + m + "/" + d); // --> </SCRIPT> これの場合、何時に見ようが今現在の日付が表示されますよね・・・ 例えばこれを午前10時になったら今日の日付に表示を変える・・・みたいなことってできますか?? (つまり午前0:00から9:59までは前日の日付を表示させるということなのですが・・・) 分かりにくかったらすいません。 どうかよろしくお願いします><

  • 日付の比較について

    PHPで日付を比較したいのですが、、 どのようにしたらよいかわかりません。 データベースのように大なり小なりで比較できるのでしょうか? 例えば、下記のように記述した場合は日付比較は正常に行われているのでしょうか? 今日の日付 $date = date('Y-m-d'); DBから取得した日付 $str_date = '2005-05-22'; if($date < $str_data){ 処理1 }else{ 処理2 }

    • ベストアンサー
    • PHP
  • PHPで指定した日付の1ケ月前表示

    MySQLにある日付を拾ってきて表示しています。 <?php echo $row_target_date['ap_date']; ?> 上記のPHPでは、MySQLのテープルのap_dateカラムにある日付を拾ってきて表示するようにしています。 この1ケ月前を表示したいと考えています。 <?php echo "1月前:" . date("Y/m/d",strtotime("-1 month" ,strtotime("echo $row_target_date['ap_date']"))) . "<BR>"; ?> では表示できませんでした。 表示方法についてご指導いただきたくお願い致します。

    • ベストアンサー
    • PHP
  • 日付の比較方法

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

    • ベストアンサー
    • PHP
  • PHPでの日付について

    PHPとPostgreSQLを利用しています。 日付を取得して、現在の日付と比べて7日以内であれば、指定の文言を表示して、7日以上であれば表示しないようにしたいです。現時点では以下のように記述しています。 $today = date(Y-m-d); if($today - $update_day <= 7) { echo "表示"; } else { echo "非表示"; } ちなみに $todayも$update_dayも形式は2005-09-18のような形です。 ご教授願います。

    • ベストアンサー
    • PHP
  • 同一カラム内での日付のソート

    PHP5.2.6 MySQL 4.0.2 下記のカラムで日付の新しい順に表示させたいのですが、 MySQLの関数で可能なのでしょうか? [例] id|name|date1|title1|mes1|date2|title2|mes2|date3|title3|mes3|… 1|taro|2008-01-01|タイトル1|メッセージ1|2008-12-31|タイトル2|メッセージ2|2008-08-30|タイトル3|メッセージ3|… これを taro: 2008-01-01 タイトル1:メッセージ1 2008-08-30 タイトル3:メッセージ3 2008-12-31 タイトル2:メッセージ2 と表示させたいのですが、やはりPHPの範疇でしょうか? 宜しくお願い致します。

専門家に質問してみよう