首页 > 解决方案 > 如何将未来的日子带到过去的日期,然后使用 postgresql 恢复到过去的日子?

问题描述

我有一个有 6 个表的数据库。每个表都有一个列表datedatetime列,如下所示

Table 1                Table 2              ....               Table 6

Date_of_birth          Exam_date  exam_datetime               Result_date   Result_datetime

2190-01-13             2192-01-13  2192-01-13 09:00:00        2194-04-13    2194-04-13 07:12:00
2184-05-21             2186-05-21  2186-05-21 07:00:00        2188-02-03    2188-02-03 09:32:00
2181-06-17             2183-06-17  2183-06-17 05:00:00        2185-07-23    2185-07-23 12:40:00

我想做的是将所有这些未来的日子转移回过去的日期(绝对必须小于当前日期),但保持相同的时间顺序。意思是,我们可以看到这个人先出生,然后他参加考试,最后,他得到了他的成绩。

此外,我应该能够恢复更改并再次取回未来的日期。

我希望我的输出如下所示

第 1 阶段 - 回到过去(可以是任何一天,但必须是过去并保持时间顺序)

Table 1                Table 2              ....               Table 6

Date_of_birth          Exam_date  exam_datetime               Result_date   Result_datetime

1990-01-13             1992-01-13  1992-01-13 09:00:00        1994-04-13    1994-04-13 07:12:00
1984-05-21             1986-05-21  1986-05-21 07:00:00        1988-02-03    1988-02-03 09:32:00
1981-06-17             1983-06-17  1983-06-17 05:00:00        1985-07-23    1985-07-23 12:40:00

第 2 阶段 - 像以前一样向前移动到未来的日子

Table 1                Table 2              ....               Table 6

Date_of_birth          Exam_date  exam_datetime               Result_date   Result_datetime

2190-01-13             2192-01-13  2192-01-13 09:00:00        2194-04-13    2194-04-13 07:12:00
2184-05-21             2186-05-21  2186-05-21 07:00:00        2188-02-03    2188-02-03 09:32:00
2181-06-17             2183-06-17  2183-06-17 05:00:00        2185-07-23    2185-07-23 12:40:00

标签: sqlpostgresqldatedatetimepsql

解决方案


减去两个世纪:

update table1
    set date_of_birth = date_of_birth - interval '200 year';

您可以对所有其他日期执行类似的操作。


推荐阅读