日期数学在R与Redshift中的结果不同

时间:2019-04-26 14:22:44

标签: r postgresql amazon-redshift rpostgresql

在使用RPostgres软件包连接Redshift时遇到问题。我不确定这与我们的数据库设置有关,还是与程序包有关。

在Redshift中使用相同的确切查询与在RPostgres包中在R中使用相同的确切查询时,会得到不同的结果。

它的出现完全归因于日期数学,因为当不使用日期时,我的总行数以及其他所有内容都匹配。

例如,这可能是我在Redshift(使用元数据库)中运行的查询。如果我使用RPostgres软件包在R中运行相同的确切查询,我将获得完全不同的结果。

^(feature(s)?|release(s)?|hotfix(es)?)(\/[a-z\d]+)([-/_.][a-z\d]+)+$

Metabase中的日期很有意义。它仅显示三天前的一天。但是,在R中显示2天。

在此示例中,将日期视为时间戳。

有人遇到过这个问题,还是知道存在的问题并解决?

1 个答案:

答案 0 :(得分:1)

通常最好对日期绝对明确,以确保会话设置不会无意间影响查询。试试这个:

SELECT
orders.*
FROM
orders
WHERE 
orders.date >= date_trunc('day', current_timestamp at time zone 'utc') - '3 days'::interval
AND 
orders.date < date_trunc('day', current_timestamp at time zone 'utc') - '2 days'::interval

如果您的日期隐式存储在其他时区中,则可能不得不从utc更改时区。