我有一个Python脚本,该脚本可插入具有名为PUBLISH_TIMESTAMP
的列的表,该列定义为TIMESTAMP(6)
列数据类型,精度为毫秒。我必须对照具有以下时间范围的查找表来检查此时间戳记的时间部分。 SHIFT_START_TIME
和SHIFT_END_TIME
属于time
数据类型。
SHIFT_NAME | SHIFT_START_TIME | SHIFT_END_TIME
------------+------------------+----------------
SHIFT-CA | 00:00:00 | 00:59:59
SHIFT-A | 01:00:00 | 08:00:00
SHIFT-B | 08:00:01 | 16:00:00
SHIFT-CB | 16:00:01 | 23:59:59
要应用支票,我正在使用CURRENT_DATE
和SHIFT_START_TIME
和SHIFT_END_TIME
创建时间戳,以便为BETWEEN
子句指定一个范围。该条款将针对PUBLISH_TIMESTAMP
进行测试。此方法适用于CURRENT_TIMESTAMP
-参见下文。
SELECT "SHIFT_NAME"
FROM "CONFIG"."SHIFTS"
WHERE CURRENT_TIMESTAMP BETWEEN
CURRENT_DATE + "SHIFT_START_TIME" AND
CURRENT_DATE + "SHIFT_END_TIME";
SHIFT_NAME
------------
SHIFT-CA
但是,当我如下所示进行联接时,我没有任何记录。请注意,"A"."PUBLISH_TIMESTAMP"
和CURRENT_TIMESTAMP
距离不太远。
SELECT "A".*
FROM "DATA"."DEVICE_DATA" "A",
"CONFIG"."SHIFTS" "B"
WHERE "B"."SHIFT_NAME" = 'SHIFT-CA'
AND "A"."PUBLISH_TIMESTAMP" BETWEEN (CURRENT_DATE + "B"."SHIFT_START_TIME")
AND (CURRENT_DATE + "B"."SHIFT_END_TIME");
您能帮我对照带有时间值的列检查PUBLISH_TIMESTAMP
的时间部分吗?