假设我有一个名为baking_events
的表,它有一个start_date
和end_date
字段。现在,我决定要利用所有不错的范围运算符,因此我在名为daterange
的表中添加了一个新的duration
列。
我想运行一个查询来更新我的duration
表上的baking_events
,以便在删除[start_date, end_date]
和{之前,它等于每个记录的start_date
。 {1}}列。
有没有一种方法可以在postgres中执行而不必遍历每个单独的记录?之类的东西:end_date
(此查询显然不起作用,但是应该让您了解我想做什么)。
答案 0 :(得分:1)
select daterange('2018-01-01', '2018-12-31', '[]');
daterange
-------------------------
[2018-01-01,2019-01-01)
(1 row)
尽管此处指定了[[]“,但由于daterange
是discrete range type.
更新命令可能如下所示:
UPDATE baking_events
SET duration = daterange(start_date, end_date, '[]');
请注意,在添加和更新新列之后,表为not normalized,您应该考虑删除start_date
和end_date
列。