AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 76938193
Accepted
sahil
sahil
Asked: 2023-08-20 14:25:43 +0800 CST2023-08-20 14:25:43 +0800 CST 2023-08-20 14:25:43 +0800 CST

Escreva uma consulta psql para localizar usuários em um intervalo de tempo

  • 772

Eu tenho tabela de usuário e equipe.

  • tabela de usuário temmonth, day, id, timezone and team_id
  • tabela da equipe temtime (24 hour format) and id

Eu tenho que encontrar todos os usuários para os quais o horário em seu fuso horário local é igual ao horário especificado para sua equipe. Meu cron runs every 15 minute, então eu quero ter certeza de que nenhum usuário foi perdido. Como escrever uma consulta postgres para isso. Escrevi a consulta abaixo, mas quero estendê-la para que leve todos os casos mencionados acima

Cron roda em Nodejs

SELECT id, timezone
FROM user_table
WHERE EXTRACT(HOUR FROM NOW() AT TIME ZONE 'UTC' AT TIME ZONE user_table.timezone) = 9
  AND day = EXTRACT(DAY FROM NOW() AT TIME ZONE 'UTC' AT TIME ZONE user_table.timezone)
  AND month = EXTRACT(MONTH FROM NOW() AT TIME ZONE 'UTC' AT TIME ZONE user_table.timezone);
postgresql
  • 1 1 respostas
  • 30 Views

1 respostas

  • Voted
  1. Best Answer
    Asi Salo
    2023-08-20T14:46:04+08:002023-08-20T14:46:04+08:00

    Se eu entendi bem a estrutura e as dependências da sua tabela, isso deve funcionar.

    Primeiro crie uma tabela para rastrear os usuários que receberam desejos:

    CREATE TABLE wished_users (
      user_id INT PRIMARY KEY,
      wish_sent_at TIMESTAMPTZ
    );
    

    Em seguida, use a consulta para selecionar usuários qualificados e inseri-los na tabela wish_users enquanto considera o intervalo de tempo:

    WITH eligible_users AS (
      SELECT
        u.user_id,
        u.username,
        u.birthdate,
        u.timezone
      FROM user_table u
      JOIN team_table t ON u.team_id = t.id
      WHERE
        EXTRACT(DAY FROM u.birthdate AT TIME ZONE u.timezone) = EXTRACT(DAY FROM CURRENT_TIMESTAMP AT TIME ZONE u.timezone)
        AND EXTRACT(MONTH FROM u.birthdate AT TIME ZONE u.timezone) = EXTRACT(MONTH FROM CURRENT_TIMESTAMP AT TIME ZONE u.timezone)
        AND EXTRACT(HOUR FROM CURRENT_TIMESTAMP AT TIME ZONE u.timezone) = 8
        AND EXTRACT(MINUTE FROM CURRENT_TIMESTAMP AT TIME ZONE u.timezone) >= 45
        AND EXTRACT(HOUR FROM NOW() AT TIME ZONE u.timezone) = 9
        AND NOT EXISTS (
          SELECT 1 FROM wished_users wu WHERE wu.user_id = u.user_id
        )
    )
    INSERT INTO wished_users (user_id, wish_sent_at)
    SELECT user_id, CURRENT_TIMESTAMP
    FROM eligible_users;
    
    • 0

relate perguntas

  • O caractere de escape de barra invertida do Postgresql não funciona para vírgulas em COPY FROM

  • biblioteca postgresql não encontrada no contêiner docker baseado em clojure

  • A inserção do Postgres está acontecendo apesar de violar a restrição de índice parcial

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve