• ベストアンサー

保存時間から10日後の判定

保存時間からちょうど10日後の時間経過処理に行き詰まってしまったのでお力を貸していただけないでしょうか。 NOW()にて 現在時間をテーブル(time)へ保存したとします。 例:2004-10-22 15:52:31 この時間を $sql = "SELECT * FROM test WHERE (to_days(NOW()) - to_days(time))='10'"; とすることで10日後の経過の取得は出来たのですが、 例の場合ですと 2004-10-22 15:52:31 ↓10日後の同時刻 2004-11-01 15:52:31 を経過した時点の処理方法がわかりません。 ご協力よろしくお願い致します

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

#2です 補足。 ■日付の加算 ・date_add を使用する。 (日付計算、日数計算、カレンダー計算) select date_add(now(), interval 3 day); +---------------------------------+ | date_add(now(), interval 3 day) | +---------------------------------+ | 2003-06-01 21:12:06 | +---------------------------------+ というのがあるそうです・・

参考URL:
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_16.htm
全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

to_days(now()-60*60*24*10) > time 現在時間の10日間前の時刻との比較 で、どうでしょう? 未確認なので動くか分かりませんが。

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

こんにちは。 例えば、時間の部分は TIME_TO_SEC で秒変換して、大きさを比べる・・・なんてダメですか? あくまでも例えばですが・・・。 (^^ゞ

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

関連するQ&A

  • 24時間以内に更新されたデータを取得

    MySQL3で24時間に更新されたデータを取得したいのですが、いまいち方法が分かりません。 select * from test WHERE to_days(now()-60*60*24) > UpdataDate このような形では無理なようなのですが、いい方法はあるでしょうか? UpdataDateはdatetime型です。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • datetime型で日付計算ができません。

    開始日時(start_date)の20日を経過したレコードを削除したいのですがSQLで行う方法がわかりません。 start_dateはMySQLのdatetime型です。 select * from test where start_date + 20days < now() な感じ消せると思ったのですが調べても方法が 見つかりませんでした。

    • ベストアンサー
    • MySQL
  • 日時の期間での抽出

    スケジュール帳のWebアプリを作成していて PostgreSQLを使用しています。 sc_tblというテーブルのday_timeというカラムに日時 to_doというカラムに予定を入れているのですが 日時2006/12/01 01:00のデータを期間の抽出条件で抽出する時 2006/11/30 20:00~2006/11/30 26:00という条件で抽出できるような SQL文はあるのでしょうか。(1:00を25:00として抽出したい) 下記2つのSQLでは無理でした。 ・その1 select day_time, to_do from sc_tbl where day_time >= cast('2006-11-30 20:00:00' as timestamp) and day_time <= cast('2006-11-30 26:00:00' as timestamp); ・その2 select day_time, to_do from sc_tbl where day_time >= to_date('2006-11-30 20:00:00','YYYY-MM-DD H24:MI:SS') and day_time <= to_date('2006-11-30 26:00:00','YYYY-MM-DD H24:MI:SS');

  • sql文の中での時間取得

    sql文の中で以下のように時間を指定してselectしています。ですが、時間を「sqlの実行時間からn分前までの間」に修正したいと考えています。どなたかご教示いただけませんでしょうか。 select count(*) from tableA where hoge = '0000' and end_time >= cast('2000/1/01 00:00' as timestamp) and end_time < cast('2011/1/31 00:00' as timestamp) たとえば select count(*) from tableA where hoge = '0000' and end_time >= sqlを実施した時間から45分前 and end_time < sqlを実施した時間 のようにしたいです。 ご協力お願い致します。

  • 今週の日曜日から土曜日までの要素の抽出

    次のようなテーブルがあります。 info{ name varchar(50) release date } 今週の日曜日(6/21)から土曜日(6/27)までの要素を抽出するため 次のようなSQL文を実行しました。 SELECT name FROM info WHERE release BETWEEN DATE_SUB( DATE(NOW()), INTERVAL DATE_FORMAT(NOW(), '%W') DAY ) and DATE_ADD( DATE(NOW()), INTERVAL WEEKDAY(NOW()) DAY ) この構文でエラーがでてしまいます。 BETWEENのand前後の指定は間違っていないと思うのですが どこが悪いのかわかりません。 ご教授願います。

    • ベストアンサー
    • MySQL
  • 項目以外の文字列は連結できますか?

    やりたいことは、日付と時間の項目から 現在時刻を過ぎているかのフラグを返す事ですが、 MySQLで普通の文字列を連結する方法がわかりません。 どのようにすれば実現できるでしょうか? SELECT IF(CONCAT(end_day,end_time) < NOW(), 1,0) end, from test testテーブル |end_day |end_time |2006-03-15 | 10:00 |2006-03-20 | 10:00

    • ベストアンサー
    • MySQL
  • 行のカウントを2種類を1つの文で発行したい

    こんにちは質問させてください。 商品が登録されているテーブル A に以下のカラムがあるとします。 id(int),  name(varcahr),  dt(datetime) id   には 店を識別す固有の番号がふってあり、 name には 商品名、  dt   には商品を登録した日付が入っているものとします。 やりたいことは ”id が 「1」 である全商品数” と ”今月登録された商品の数” を出力したいのです。 id が 1 である商品の数は以下のSQLで取り出せます。 SELECT COUNT(*) FROM  ( SELECT * FROM A WHERE A.id='1' ) AS tbl1 id が 1 で 今月登録された商品の数は以下のSQLで取り出せます。 SELECT COUNT(*) FROM  ( SELECT * FROM A     WHERE A.dt BETWEEN DATE(       DATE_SUB( NOW(), INTERVAL DAYOFMONTH( NOW() )-1 DAY) ) AND      LAST_DAY( NOW() ) AND A.id='1' ) AS tbl1 これをひとつのSQLにまとめるにはどうしたらいいのでしょうか…。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • CASE文での問い合わせ

    下記のSQLでWHEREでnow_tが存在しないとでてSQLを実行できません。 どのようにしたらnow_tをWHEREで判定できるでしょうか。 WHEREが先に実行される為に存在しないというエラーがでるのは わかるんですが、でないようになんとかできないでしょうか? SELECT CASE WHEN s = 1 THEN 1 ELSE 2 END AS now_t FROM test WHERE now_t = 1

  • 単位時間ごとのレコードのカウント

    time ---------------------------- 2006-12-01 00:00:00.323861 2006-12-01 00:00:00.710523 2006-12-01 00:00:00.963864 2006-12-01 00:00:01.45068 2006-12-01 00:00:01.512551 2006-12-01 00:00:02.17493 2006-12-01 00:00:02.731608 2006-12-01 00:00:02.873651 2006-12-01 00:00:03.398863 2006-12-01 00:00:03.438085 2006-12-01 00:00:03.833481 このようなレコードが格納されているテーブルに対して、例えば1秒ごとにレコードを集計してその集計時間と集計数を表示する といったことをどのようなSELECT文を作れば良いのでしょうか? SELECT COUNT (time) FROM table1 where ~ と書いて条件文を一秒ごとに設定した文を何度も繰り返し実行してみたのですが、処理を完了するのにかなり長い時間を要したのでこの方法は断念しました。 短時間でこの処理が行えるような文があったら教えてください。 お願いします。

  • SQLで時間の比較

    SQLで時間の比較 DBの情報tbltimeとソース内で取得したdTimeNowを比較したいのですがうまく実行されません。 SQLで現在時間を取得する{fn Now}を使用するとうまくいきますが、今回はソースのプロパティを使用したいです。 "Select * FROM tblA WHERE tbltime < " & dTimeNow tbltimeはDate型で2010/01/01 11:11:11のように設定されています。 スペースがあるからうまくいかないのかなとも思うのですが、どうしたらうまく比較できるのでしょうか? ご教授よろしくお願い致します。 環境 SQL Server 2005 VB.net