问题描述
日期就像 2021-07-23
预期的输出是这样的 2021-07-24 00:00:00+08
注意 +08
吗?
我在下面尝试过,但我没有得到加号
s_table.school_date + INTERVAL '1 day'
知道如何使 +08
出现吗?
解决方法
这是包含时区的时间。
尝试在 Postgres 中运行以下命令,它会根据您所在的位置返回带时区的日期时间,该时区在 +
或 -
之后。
SELECT NOW();
Edit-01:
试试下面的代码:
s_table.school_date::timestamptz + INTERVAL '1 day'
,
我无法测试它,但您是否尝试将该日期转换为时间戳?
请参阅有关不同时间戳类型的 this page from postgresql 教程。
所以你可以试试:
(s_table.school_date + INTERVAL '1 day')::timestampz
将当前值转换为带时区的时间戳。
如果返回的时区不正确,您可以使用 SET timezone='America/Los_Angeles'
或查找当前数据库使用的时区 SHOW timezone;
您还可以使用 SELECT * FROM pg_timezone_names;
查看数据库的所有时区。>
我从 this resource 获得了特定于时区的信息。
我一定会先测试在事务中设置时区,因为我担心它会为整个数据库设置时区,并且可能会影响数据库中发生的其他过程/查询。
我希望这会有所帮助!抱歉,我无法在发送此信息之前先尝试一下。
编辑:看起来我有点慢!很高兴你想通了:)