根据时间范围更新表



有没有一种方法可以根据postgres DB中的日期范围进行更新?

意思是如果我有一行有以下值,

name code some_timestamp
abc  1    2020-09-07T13:22:23.206862

我想更新基于名称some_timestamp字段的行。

我可以做以下事情,而且效果很好。

UPDATE myTable SET code=2 WHERE name='apple' and some_timestamp='2020-09-07T13:22:23.206862';

但我不想以特定的日期时间为目标,而是能够更新

名称匹配,日期范围在同一天内。

有办法做到这一点吗?已通过date_trunc尝试。没有错误,但它不执行更新。(也尝试了LIKE,结果相同(。

update myTable set code=1 where name='apple' and some_timestamp=date_trunc('day', TIMESTAMP '2020-09-07T13:22:23.206862');

否则可以通过BETWEEN键实现,但尝试查看是否可以通过date_trunc实现。请提供建议。谢谢

我建议:

update myTable
set code=1
where name = 'apple' and 
some_timestamp >= date_trunc('day', TIMESTAMP '2020-09-07T13:22:23.206862') and
some_timestamp < date_trunc('day', TIMESTAMP '2020-09-07T13:22:23.206862') + interval '1 day';

您也可以使用:

update myTable
set code=1
where name = 'apple' and 
date_trunc('day', some_timestamp) = date_trunc('day', TIMESTAMP '2020-09-07T13:22:23.206862');

但这并不是指数友好型的。

在两侧使用date_trunc()

update myTable 
set code=1 
where name='apple' 
and date_trunc('day', some_timestamp) =
date_trunc('day', TIMESTAMP '2020-09-07T13:22:23.206862');

最新更新