postgres-使用当前日期和时间列值构造时间戳记

时间:2018-06-22 18:35:18

标签: sql postgresql sql-timestamp

我有一个Python脚本,该脚本可插入具有名为PUBLISH_TIMESTAMP的列的表,该列定义为TIMESTAMP(6)列数据类型,精度为毫秒。我必须对照具有以下时间范围的查找表来检查此时间戳记的时间部分。 SHIFT_START_TIMESHIFT_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_DATESHIFT_START_TIMESHIFT_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的时间部分吗?

0 个答案:

没有答案