有没有一种方法可以根据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');