1

A と B の 2 つのテーブルがあります。その名前が現在 time_start と time_end の間の期間に含まれていない場合は、名前と 'notInTime' をテーブル B に挿入したいと考えています。

例: 今の時間 = 10:30

TABLE A
NAME TIME_START (DATETIME) TIME_END (DATETIME)
A 12:00 14:00
A 10:00 13:00
B 09:00 11:00
B 10:00 11:00
C 12:00 14:00
D 16:00 17:00

Table B
Name Indicator
A intime
B intime

クエリを実行すると、テーブル B に以下が追加されます。

C notInTime
D notinTime
4

4 に答える 4

2
INSERT INTO TABLE_B b (column_name_1, column_name_2)
SELECT 
'C', 
CASE WHEN EXISTS (SELECT 1 FROM TABLE_A a WHERE a.NAME = 'C' AND '10:30' BETWEEN TIME(a.TIME_START) AND TIME(a.TIME_END)) THEN 'intime' ELSE 'notinTime' END
UNION ALL 
SELECT 
'D', 
CASE WHEN EXISTS (SELECT 1 FROM TABLE_A a WHERE a.NAME = 'D' AND '10:30' BETWEEN TIME(a.TIME_START) AND TIME(a.TIME_END)) THEN 'intime' ELSE 'notinTime' END
于 2013-08-08T11:55:25.860 に答える
0

@trapickiが言ったように、時間をハードコーディングする理由はありません。

insert
  into b
  (select distinct name,
                   'notInTime'
     from a
     where sysdate not between a.time_start and a.time_end)
于 2013-08-08T12:44:30.427 に答える
0

試しましたBETWEENか?

  INSERT INTO TABLE B 
 (SELECT DISTINCT
         name
       , 'notInTime'
    FROM A
  WHERE '10:30' NOT BETWEEN TIME(a.TIME_START) AND TIME(a.TIME_END))
于 2013-08-08T11:58:42.477 に答える