昨天-在Redshift和PostgreSQL中-日期添加兼容性

时间:2018-06-20 07:33:30

标签: postgresql amazon-redshift

试图编写与PostgreSQL和Amazon Redshift都兼容的查询。

原因:将数据从PG同步到RS以执行复杂的查询,但是在dev / QA环境中,预算(和数据库大小)决定仅使用PG。

请求:返回昨天的日期

在PostgreSQL中:

SELECT DATE((NOW() - '1 DAY'::INTERVAL)); 

在Redshift中:

SELECT DATE(DATEADD(DAY, -1, GETDATE()));

问题:两者都不在另一个平台上工作。

是否有兼容的方式来实现所请求的操作? 我们希望避免使用ORM。

1 个答案:

答案 0 :(得分:5)

以下在Postgres和Redshift中起作用:

ANSI标准SQL:

SELECT current_date - interval '1' day;
-- 2018-06-19 00:00:00
SELECT current_timestamp - interval '1' day;
-- 2018-06-19 13:40:06.509337+00

Postgres(我也相信Redshift也)也支持替代(非标准)间隔语法:interval '1 day'

或更紧凑(不是100%ANSI SQL,但两者均可工作):

SELECT current_date - 1;
-- 2018-06-19 00:00:00
SELECT current_timestamp - 1;
-- 2018-06-19 13:40:06.509337+00