所以我在Redshift数据库上遇到以下奇怪的行为。
以下查询将按预期运行,将当前时间戳缩短为一个月:
select date_trunc('month', now()) -- returns 2019-01-01 00:00:00+00
相反,此查询:
select date_trunc('month', now())
from table
返回以下错误
错误:未指定类型或功能(每个INFO消息一个) 在Redshift表上受支持。
没有INFO消息,但显然问题与date_trunc()
有关,因为它是唯一使用的函数。
通常,我希望它能像在PostgreSQL上一样工作,返回截断到一个月的当前时间戳,该时间戳的时间与table
的行数一样多。
我还研究了this,以防date_trunc()
尚未得到完全支持,但我找不到任何参考。
我有什么想念的吗?有解决方法吗?
答案 0 :(得分:6)
now()是仅前导节点功能。这意味着如果您不使用表格,它就会起作用。
您可以使用current_timestamp代替now()
例如
select date_trunc('month', current_timestamp)
from table;
这可以正常工作。
请参阅https://docs.aws.amazon.com/redshift/latest/dg/Date_functions_header.html
(在底部)