因此,我有一个在 WHERE
和 HAVING
子句中使用 GETDATE() 的查询:
SELECT GETDATE(), COUNT(*) FROM (
SELECT 1 FROM events
WHERE (event_time > (GETDATE() - interval '25 hours'))
GROUP BY id
HAVING MAX(event_time) BETWEEN (GETDATE() - interval '25 hours') AND (GETDATE() - interval '24 hours')
)
我基本上试图找到相对于当前时间在 25 到 24 小时前具有最新 event_time
的唯一 id
的数量。
问题:我有另一个表query_dts
,其中包含一列包含时间戳。我需要运行 query_dts
表中每个条目的时间戳,而不是使用 GETDATE()
在当前时间运行上述查询。有什么想法吗?
注意:我并没有真正将 query_dts
存储在任何地方。我是这样创建的:
WITH query_dts AS (
SELECT (
DATEADD(hour,-(row_number() over (order by true)), getdate())
) as n
FROM events LIMIT 48
),
我从 here 得到的
最佳答案
如何完全避免生成器而只是分割间隔:
SELECT
dateadd(hour, -distance, getdate()),
count(0) AS event_count
FROM (
SELECT
id,
datediff(hour, max(event_time), getdate()) AS distance
FROM events
WHERE event_time > getdate() - INTERVAL '2 days'
GROUP BY id) AS events_with_distance
GROUP BY distance;
关于sql - Redshift : Running query using GETDATE() at specified list of times,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35986221/