
たとえば
データ(1)
A:11時 B:13時
データ(2)
A:18時 B:0時
データ(3)
A:23時 B:3時
現在時刻が12時の場合
データ(1)が抽出
現在時刻が17時なら
データ(2)(3)が抽出
現在時刻が0時なら
データ(2)(3)が抽出
のように
現在時刻が期間AからBに該当する場合に
データがHITするような
SQLを作りたいのですが
うまくいきません
where 'now' between A and B;
ではうまくいきませんでした
何か良いSQLはありませんか?
ちなみにTIME型データです
それ以外のデータ型でもいいです
希望通りの動きをするなら・・・
よろしくお願いします
No.3ベストアンサー
- 回答日時:
TIME型は24:00:00までしか入らないのですね。
ごめんなさい。
表示時間が0時に掛かる場合の検索条件をORで加えてみてはどうでしょう。
select * from test where (a <= b and a <= CURRENT_TIME AND CURRENT_TIME < b) or (a > b and (CURRENT_TIME < b or a <= CURRENT_TIME));
/* テストデータ */
insert into test values ('21:00:00', '2:00:00');
-- 9時から24時まで表示
insert into test values ('9:00:00', '0:00:00');
-- 0時から9時まで表示
insert into test values ('0:00:00', '9:00:00');
insert into test values ('15:00:00', '20:00:00');
/* 結果(試験時、22時30分)*/
a | b
----------+----------
21:00:00 | 02:00:00
09:00:00 | 00:00:00
(2 rows)
参考URL:http://www.postgresql.jp/document/pg824doc/html/ …
No.2
- 回答日時:
PostgreSQL8.2.4です。
CURRENT_TIMEで現在の時間が得られます。
-- テスト用のテーブル
create table test (
a time,
b time
);
-- テストデータ
insert into test values ('9:00:00', '12:00:00');
insert into test values ('15:00:00', '20:00:00');
insert into test values ('9:00:00', '0:00:00');
insert into test values ('9:00:00', '24:00:00');
-- クエリ
cre-at=> select * from test where a < CURRENT_TIME AND CURRENT_TIME < b;
-- 結果(これを書いている時は12時前なので)
a | b
----------+----------
09:00:00 | 12:00:00
09:00:00 | 24:00:00
(2 rows)
bが0時を過ぎる時は、「24時」のようにデータを挿入しないと検索されませんね。
参考URL:http://www.postgresql.jp/document/pg824doc/html/ …
この回答への補足
解答ありがとうございます
さっそく試してみたのですが
insert into test values ('35:00:00', '12:00:00');
上記のようにすると
ERROR: date/time field value out of range: "35:00:00"
となってしまいます。
insert into test values (to_timestamp('35:00:00','HH24MISS'),'12:00:00');
上記のようにすると自動で変換されてデータは「11:00:00」扱いとなってしまいました
データの型はtime型です
データがそもそも入れれないので
動作を試すことができません。
No.1
- 回答日時:
>現在時刻が17時なら
>データ(2)(3)が抽出
データ例から判断すると、矛盾していますが?
>where now between A and B;
nowは日時ですから、time型と直接比較できません。
time型なら、20時~6時と行った場合、条件を二つに分ける必要があります。20:00:00~23:59:59と、00:00:00~06:00:00でです。timestamp型なら、こういった操作は不要ですが、別の日のデータはヒットしなくなります。
>何か良いSQLはありませんか?
>それ以外のデータ型でもいいです
>希望通りの動きをするなら・・・
具体的なアドバイスが欲しいなら、やりたいことをもっと具体的にかつ正確に示してください。
この回答への補足
>現在時刻が17時なら
>データ(2)(3)が抽出
は間違いですすみません。
やりたいのは
現在時刻が設定時刻Aから設定時刻Bの間ならHIT
と言うことです。
設定時刻ABは共に自由に設定できて
入力できる数値は0~23(時)です
(もしくは24HMMSS)
Aが0時 Bが23時の設定の場合もあれば
Aが22時 Bが2時(26時)の場合もあります
設定期間内ならデータを抽出したいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Excel(エクセル) 指定した値以上の中で最小値を出したい 7 2022/10/24 21:12
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) 特定のデータの抽出方法を教えてください@Excel 4 2023/06/13 18:38
- Excel(エクセル) Excel関数、何がいけないのかわかりません。 2 2023/06/11 12:14
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- iCloud iPhoneデータ移行について 3 2022/05/13 19:25
- Android(アンドロイド) Androidスマホのデータ移行が終わらない 1 2023/08/04 17:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
自治会総会の成立要件について
-
select文の書き方「半角カナ+...
-
postgresql についてです
-
画像とカテゴリーを出力したい...
-
bashスクリプトでpostgreSQLの...
-
PostgreSQLについて教えてくだ...
-
「ファイル名を指定して実行」 ...
-
terapad 1行文字数変更が反映...
-
postgresqlのtableのカラムの型...
-
php、postgresqlを使ってwebア...
-
三段論法を真理値表で証明する
-
sqlの中で、 例えば条件句で AN...
-
tesuto 01
-
python3.12のインストール方法
-
Pythonで2つのデータ(キー無し...
-
数値が定期的にあらわれる文字...
-
終端クォート ' が必要です と...
-
PostgressからMySQL(MariaDB)...
-
【PostgreSQL】行の値の並びを...
-
列が存在しないと言われる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルを読み込んでテーブ...
-
SQLSERVER 連番更新について
-
timestamp が空のデータを除い...
-
テキストボックスの背景をVB...
-
ACCESS テキストボックスに入...
-
SELECT文で足し算をした場合、N...
-
エクセルVBA 10分後にエクセル...
-
エクセルVBEについて
-
date型でのbetweenについて教え...
-
Accessエクスポート時に連番を...
-
1つのドメインを複数のDNSで管...
-
配列データに対する、要素の追...
-
【Access】SQL文教えてください!
-
データがリストアできない!!
-
型について
-
Access VBA Excelbookを開く際...
-
PostgreSQLのnumericでの書き込...
-
エクセル vba 色分け
-
Japanese schools
-
バッチファイルでrenを使用時、...
おすすめ情報