如何获取 7 天前的日期?
Posted
技术标签:
【中文标题】如何获取 7 天前的日期?【英文标题】:How do I get the date from seven days ago? 【发布时间】:2019-10-29 03:22:42 【问题描述】:我想制作一个图表,提供上周的数据。
我尝试使用此代码,但它出错了。
where (time_stamp::date > dateadd(day, -7, now()::date))
我也试过
(ud.time_stamp::date between now() and dateadd(day, -7, now()::date))
它给了我这个错误
错误运行查询:指定类型或函数(每个 INFO 一个 消息)在 Redshift 表上不受支持。
【问题讨论】:
date_sub ok with mysql, ko with postgresql的可能重复 我删除了 PostgreSQL 标签,因为它明显具有误导性。 【参考方案1】:在 Redshift 中,我会这样写:
where time_stamp >= current_date - interval '6 day'
我怀疑time_stamp
可能用于分区,并且您要小心涉及其上的函数的比较。
【讨论】:
【参考方案2】:你可以试试下面这个选项-
where (time_stamp::date > NOW() - interval '7 day')
【讨论】:
我不确定 Redshift 是否支持interval
语法。
它的 Postgres 作为标记。
Postgres != 红移。 Redshift 是一个相当老的 Postgres 版本的分支。这就是为什么两个数据库的语法并不总是一致的原因。
嗯,但我认为这是一个 Postgres 问题,因为 OP 标记了 Postgres。
Amazon Redshift 支持间隔:Interval Literals - Amazon Redshift【参考方案3】:
试试这个版本:
WHERE time_stamp > DATEADD(day, -7, current_date)
如果您还想将数据的上限限制在今天的午夜(即上周的数据,到今天的午夜结束),您可以使用:
WHERE time_stamp >= DATEADD(day, -7, current_date) AND time_stamp < current_date
【讨论】:
Redshift 是否 支持使用双冒号运算符docs.aws.amazon.com/redshift/latest/dg/r_CAST_function.html 转换数据类型 @LaurenzAlbe Redshift 是 Postgres 8 的一个分支,所以如果你记得::
在那里,那么我原来的陈述是不正确的。【参考方案4】:
您还没有提到 time_stamp
列的数据类型是什么,但假设它可以转换为 date
那么我认为问题可能是由于您使用了 NOW()
函数在 Redshift 上已弃用。尝试根据the documentation 将其替换为GETDATE()
或SYSDATE
。
【讨论】:
以上是关于如何获取 7 天前的日期?的主要内容,如果未能解决你的问题,请参考以下文章