![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
お世話になります。
現在、以下のようにテーブルにデータが入っているとします。
そこで、発生時間から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分経過したもののみ扱うこととします。
わかりづらい質問で申し訳ありません。よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
とりあえず、回復時間がNULLなら、現在時刻(NOW())と見なすようにすればいけるのでは。
select * from T where SUBTIME( IFNULL( 回復時間, NOW() ), 発生時間)> SEC_TO_TIME( 30 * 60 );
?なんか性能が低そうなクエリですが。
回答していただき、ありがとうございました。
自分がSQL言語が未熟なのがよくわかりました・・・^^;
理屈はよくわかったのですが、なぜかうまく動きませんでした・・・
年月日の区切りが、データベースでは'/'なのですが、'-'でないと動かないとかあるのでしょうか?
まだまだ勉強が足りませんががんばってみます。
ありがとうございました。
No.2
- 回答日時:
SELECT 名称
FROM テーブル
WHERE (ADDDATE(発生時間, INTERVAL 30 MINUTE) < NOW() AND 回復時間 IS NULL)
OR ADDDATE(発生時間, INTERVAL 30 MINUTE) < 回復時間;
でいけます。
この回答への補足
UNIX_TIMESTAMP(DATE_FORMAT(IFNULL(kaifuku,NOW()),'%Y-%m-%d %H:%i:%s')) - (UNIX_TIMESTAMP(DATE_FORMAT(hassei,'%Y-%m-%d %H:%i:%s'))) > 1800)
このようなSQLをつくったのですが、エラーはでないものの、絞り込めませんでした・・・疲れました。
回答していただきありがとうございました。
エラーはでなかったのですが、なぜか絞り込めませんでした。
発生時間、回復時間の 年月日を区切る記号が'/'なのですが、'-'でないとだめだとかあるんでしょうか??
もう少し考えてみます。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(学校・勉強) 浪人中の過ごし方について こんばんは。現在、大学受験の浪人生をしています。 1日のスケジュールを立て 3 2023/04/12 21:38
- 大学受験 浪人中の過ごし方について こんばんは。現在、大学受験の浪人生をしています。 1日のスケジュールを立て 6 2023/04/12 19:20
- 飲み物・水・お茶 緑茶と紅茶の抽出時間の違い 緑茶は30秒程度に対して紅茶は3分程度とパッケージに書いてあるのですが、 1 2022/05/02 20:04
- 数学 甲地から乙地へ向け、A、B、Cの3人が出発したが、出発状況と途中経過は次のようであった。まずAが徒歩 1 2022/06/01 18:38
- 九州・沖縄 6月の2泊3日2人での沖縄旅行のプランにアドバイスが欲しいです! 雨の時期のため臨機応変な観光になる 7 2023/05/09 02:38
- ホテル・旅館 紀伊半島の旅行について 3 2022/05/25 08:07
- 派遣社員・契約社員 残業時間について教えてください 5 2022/12/17 10:58
- その他(悩み相談・人生相談) 「こういうこと言うと、嫌われるんだよなあ」 2 2022/09/29 19:23
- 運輸業・郵便業 運送業に詳しい方教えて下さい。 21時30分車庫出発 22時30分積み開始 23時00分積地出発 0 1 2023/07/24 01:06
- 筋トレ・加圧トレーニング 運動メニューについて 3 2023/06/06 12:35
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
PHP+MySQLで、日時を比較して抽...
-
@コスメのようにユーザーが採...
-
SQL Serverからのvarchar型のデ...
-
where文について
-
文字列に対してPHP上で一括置き...
-
プライベート機能の作成
-
PHPの記述でSQLiteのテーブルに...
-
市区町村の表示と件数
-
mysqlのデータベース設計(1テー...
-
登録したデータを県別に並び替...
-
データの処理速度を速くするに...
-
次の日
-
変数にNULLを代入したい
-
<VB.NET>INSERT文でDBにデータ...
-
PHPのSQL文のデバッグ方法とコ...
-
PHPで絞り込み検索結果の件数を...
-
Pro*Cの構文エラー
-
PHPでMySQLデータを呼び出し、w...
-
sprintf関数での%Sが分かりませ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
トランザクション処理
-
MySQLでデータベースにデータin...
-
PHPシステムでSQLのUPDATEがあ...
-
変数にNULLを代入したい
-
phpにて出欠登録管理を作成して...
-
csvをDBへ読み込んだら、NULLが...
-
php sqlite count 列数取得
-
クエリObjectをforeachで回す時...
-
PHPでフォームからデータDBに書...
-
DB Error: no such field
-
日またぎの計算
-
OracleからAccessへのインポート
-
PHPでいいね機能を作りたいので...
-
PHP PDOを利用してカラムの削除...
-
PHPでPostgreSQLのテーブルを表...
-
SQLで返り値が空とでる
-
PHP prepare フィールド名をエ...
-
PHPでmySQLのテーブルを作成したい
-
外部結合で参照列が複数あるSQL
-
MDB2エラーが対応出来ません。
おすすめ情報