Execute uma consulta com base em um período de tempo

Olá a todos, estou apenas escrevendo uma consulta para descobrir quem não foi visto no último ano no fórum, então queria perguntar qual seria a sintaxe. Tentei last_seen_at > 2022:06:21 e recebi um erro.

Ele vai querer um timestamp em vez de uma data, então algo como isto:

SELECT id AS user_id,
       last_seen_at::date
FROM users
WHERE last_seen_at < '2022-06-21T00:00:00Z'
ORDER BY last_seen_at DESC

Alternativamente, você poderia converter a data:


SELECT id AS user_id,
       last_seen_at::date
FROM users
WHERE last_seen_at < CAST('2022-06-21' AS date)
ORDER BY last_seen_at DESC

Ou você poderia adicionar um parâmetro para torná-lo um pouco mais versátil (este tem um padrão):

-- [params]
-- date :date = 21/06/2022

SELECT id AS user_id,
       last_seen_at::date
FROM users
WHERE last_seen_at < :date
ORDER BY last_seen_at DESC

5 curtidas

Tive erros com o carimbo de data/hora, mas pode ser porque omiti as aspas simples.

2 curtidas