我一直在尝试从当前的工作中挑选出一些数据。我需要创建一个带有班次编号的附加列,该列取决于产品创建时间。该表如下所示:
product_id creation_time warehouse_name
varchar timestamp varchar
1 2016-03-29 08:30:45 11
2 2016-03-15 14:15:10 9
3 2016-03-14 05:40:45 11
现在我需要添加一个基于小时的班次编号的列 - 06:00:00 - 14:00:00班次1,14:00:00-22:00:00班次2和22: 00:00-06:00:00转移3.我对sql很新,我知道如何通过AS添加列,但我不知道如何使用正确的数据填充列基于时间戳的条件。我们通过pgadmin使用postgres数据库。我尝试了类似的东西:
SELECT creation_time, product_id, warehouse_name
FROM products WHERE creation_time BETWEEN LIKE '%06:00:00' AND '%14:00:00';
但我对于如何将条件数据插入名为shift的新列中感到很遗憾。
答案 0 :(得分:0)
您不应使用<input type="file" accept="image/*" capture="camera">
比较时间戳值。要选择时间介于06:00和14:00之间的行,请将时间戳投放到LIKE
并进行比较:
time
可以使用相同的“技巧”来创建班次列:
SELECT creation_time, product_id, warehouse_name
FROM products
WHERE creation_time::time BETWEEN time '06:00:00' AND time '14:00:00';
SELECT creation_time, product_id, warehouse_name,
case
when creation_time::time between time '06:00:00' AND time '14:00:00' then 1
when creation_time::time BETWEEN time '14:00:01' AND time '22:00:00' then 2
else 3
end as shift_number
FROM products;
运算符包含两个值,这就是为什么第二次检查在14:00之后1秒开始
between
指定时间文字(常量)。有关如何指定时间(或时间戳)值的更多详细信息,请参阅手册:
http://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME-INPUT