date_trunc()在Redshift

时间:2019-01-25 09:56:19

标签: sql amazon-redshift

所以我在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()尚未得到完全支持,但我找不到任何参考。

我有什么想念的吗?有解决方法吗?

1 个答案:

答案 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

(在底部)