如何获取 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 天前的日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中获取几天前的日期[重复]

js 日期取7天前的时间

MySQL内置函数获取几天前的日期

MySQL内置函数获取几天前的日期

H2 从当前时间获取 1 天前的日期

如何在linux中获取几天前或者几天后的日期