【问题标题】:Postgres 'date_trunc' function with 'at time zone'Postgres 'date_trunc' 函数与 'at time zone'
【发布时间】:2015-09-04 11:21:50
【问题描述】:

我正在尝试将 date_trunc 函数与特定时区一起使用,其中从列中选择参数。

它可以在没有“时区”的情况下工作:

SELECT (date_trunc('day', transactions.created_at))::DATE AS period_start FROM transactions LIMIT 1

当传入的参数是字符串时也有效:

SELECT (date_trunc('day', TIMESTAMP '2015-09-04 16:00:00' at time zone '+08:00'))::DATE AS period_start FROM transactions LIMIT 1

但是当我尝试像这样将两者结合起来时:

SELECT (date_trunc('day', TIMESTAMP transactions.created_at at time zone '+08:00'))::DATE AS period_start FROM transactions LIMIT 1

它给了我一个“在“交易”处或附近出现语法错误。

我尝试使用 to_char 将其转换为字符串,但也没有运气。我怎样才能做到这一点?

【问题讨论】:

  • 如果你想投你的created_at字段,你必须这样写:cast (transactions.created_at as timestamp)
  • @Houari 我觉得太傻了,太简单了。非常感谢你的帮助!你想把它写成答案吗?

标签: postgresql datetime timezone


【解决方案1】:

如果你想投你的created_at field,你必须这样写:

 CAST (transactions.created_at as timestamp)

所以你的最终查询应该是这样的:

SELECT (date_trunc('day', CAST (transactions.created_at as timestamp) at time zone '+08:00'))::DATE AS period_start 
FROM transactions LIMIT 1

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 2015-03-12
    • 1970-01-01
    • 2011-03-14
    • 2018-04-17
    • 2019-04-29
    • 1970-01-01
    • 2015-09-28
    • 2019-09-28
    相关资源
    最近更新 更多