【发布时间】:2021-07-26 01:40:25
【问题描述】:
日期如2021-07-23
预期的输出是这样的2021-07-24 00:00:00+08 注意+08 ?
我在下面试过这样,但我没有得到加号
s_table.school_date + INTERVAL '1 day'
知道如何让+08 出现吗?
【问题讨论】:
日期如2021-07-23
预期的输出是这样的2021-07-24 00:00:00+08 注意+08 ?
我在下面试过这样,但我没有得到加号
s_table.school_date + INTERVAL '1 day'
知道如何让+08 出现吗?
【问题讨论】:
这是包含时区的时间。
尝试在 Postgres 中运行以下命令,它会根据您所在的位置返回带有 + 或 - 之后的时区的日期时间。
SELECT NOW();
试试下面的代码:
s_table.school_date::timestamptz + INTERVAL '1 day'
【讨论】:
(s_table.school_date + INTERVAL '1 day')::timestamptz
我无法对其进行测试,但您是否尝试过将该日期转换为时间戳?
请参阅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 获得时区特定信息。
我一定会先测试在事务中设置时区,因为我担心它会为您的整个数据库设置时区,这可能会影响数据库中发生的其他过程/查询。
我希望这会有所帮助!抱歉,我无法在发送此信息之前先尝试一下。
编辑:看起来我有点慢!很高兴你知道了:)
【讨论】: