从日期差起增加日期间隔-Postgres

问题描述 投票:-1回答:1

编辑:添加了有关date1为时间戳的信息

我需要增加日期,但是间隔基于我要增加的日期与表上另一个日期之间的差,但保留date1小时和分钟。例如:

Create myTable
( id serial,
  date1 timestamp,
  date2 date
)

因此,如果date1 ='2020-01-10 10:30:00'和date2 ='2020-03-08'我需要date1为'2020-03-08 10:30:00'

Update myTable set date1 = date1+interval (date2-date1)

语法要求在值之间使用单引号(例如:日期+间隔“ 30天”)。如何将(date2-date1)中的结果包装在单引号中?我尝试了很多方法都没有成功:

Update myTable set date1 = date1+interval chr(39)||cast((date2-date1) as varchar)|| ' days'|| chr(39)
Update myTable set date1 = date1+interval $$||cast((date2-date1) as varchar)|| ' days'||$$
Update myTable set date1 = date1+interval ''||cast((date2-date1) as varchar)|| ' days'||''

如何正确执行此操作?

postgresql datetime sql-update intervals
1个回答
0
投票

您想要将date1的日期部分设置为date2,并保留时间部分:

update myTable
set date1 = date2 + date1::time;

请参见demo

© www.soinside.com 2019 - 2024. All rights reserved.