我有用于安排日历事件的时间戳列。我想只更改时间部分,同时保持日期部分不变。
我怎么可能做到?我在 postgresql
当前的:
2017-07-01 00:00:00
至:
2017-07-01 17:00:00
我有用于安排日历事件的时间戳列。我想只更改时间部分,同时保持日期部分不变。
我怎么可能做到?我在 postgresql
当前的:
2017-07-01 00:00:00
至:
2017-07-01 17:00:00
您无法在不影响日期的情况下相对于任一方向(向前或向后)有意义地更改时间。时间戳是日期和时间的混合体,意识到两者在任何现实世界的实例中都是不可分割的。您不能通过增加时间以安全的方式从
2017-07-01 00:00:00
到2017-07-01 17:00:00
。如果你尝试它,你就是在假设日期是什么。但是,您可以设置时间戳的时间部分,完全删除日期部分date_trunc
。在这种方法中,您可以确保将时间部分设置为(或至少更加确定)。只要您在设置时没有特别强制显式翻转(例如添加 25 小时),就应该很好。我在这里看到两个问题:这是一些显示两种方法的代码
除了日期时间数学,想想
$time=17
, vs$datetime+=17
。其中之一要安全得多,而且不太可能造成翻车。您想将当前列增加17 小时,还是将其设置为17:00:00
当天?添加所需的 INTERVAL
看一下:Postgres 文档上的日期/时间函数和运算符。
dbfiddle在这里
另一种方法是先转换为日期,然后再转换为时间戳
这可确保保留日期