首页 > 解决方案 > PostgreSQL 中的 DATE ADD 函数

问题描述

我目前在 Microsoft SQL Server 中有以下代码,以获取连续两天查看的用户。

WITH uservideoviewvideo (date, user_id) AS (
  SELECT  DISTINCT date, user_id 
  FROM clickstream_videos
  WHERE event_name ='video_play'  
    and user_id IS NOT NULL
) 
SELECT currentday.date AS date, 
       COUNT(currentday.user_id) AS users_view_videos, 
       COUNT(nextday.user_id) AS users_view_next_day 
FROM userviewvideo currentday
  LEFT JOIN userviewvideo nextday 
         ON currentday.user_id = nextday.user_id AND DATEADD(DAY, 1, 
currentday.date) = nextday.date
GROUP BY currentday.date

我试图让 DATEADD 函数在 PostgreSQL 中工作,但我一直无法弄清楚如何让它工作。有什么建议么?

标签: postgresqldate-arithmetic

解决方案


我不认为 PostgreSQL 真的有 DATEADD 功能。相反,只需执行以下操作:

+ INTERVAL '1 day'

SQL 服务器:

当前日期加 1 天 2012 年 11 月 21 日
SELECT DATEADD(day, 1, GETDATE());# 2012-11-22 17:22:01.423

PostgreSQL:

当前日期加 1 天 2012 年 11 月 21 日
SELECT CURRENT_DATE + INTERVAL '1 day'; # 2012-11-22 17:22:01
SELECT CURRENT_DATE + 1; # 2012-11-22 17:22:01

http://www.sqllines.com/postgresql/how-to/dateadd

编辑:

如果您使用动态时间长度来创建字符串,然后将其转换为如下间隔,这可能会很有用:

+ (col_days || ' days')::interval


推荐阅读