Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

99
Visualizações
Parte de la fecha en la cláusula WHERE de una función

Quiero seleccionar personas de una tabla donde la fecha está dentro de un mes determinado.
Esto es lo que tengo hasta ahora, pero no funciona:

 CREATE OR REPLACE FUNCTION u7() RETURNS character varying AS $BODY$ DECLARE data varchar=`data`; mes varchar=`2016-11-21`; incidencia varchar=`expulsions`; valor varchar; BEGIN EXECUTE `SELECT ` ||quote_ident(data) ||`FROM ` ||quote_ident(incidencia) ||` WHERE data IN(select date_part(`month`, TIMESTAMP $1))` INTO valor USING mes; return valor; END; $BODY$ LANGUAGE plpgsql; select * FROM u7();
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La sintaxis limpia para lo que está tratando de hacer podría verse así:

 CREATE OR REPLACE FUNCTION u7() RETURNS TABLE (valor text) AS $func$ DECLARE data text := 'data'; -- the first 3 would typically be function parameters incidencia text := 'expulsions'; mes timestamp = '2016-11-21'; mes0 timestamp := date_trunc('month', mes); mes1 timestamp := (mes0 + interval '1 month'); BEGIN RETURN QUERY EXECUTE format( 'SELECT %I FROM %I WHERE datetime_column_name >= $1 AND datetime_column_name < $2' , data, incidencia) USING mes0, mes1; END $func$ LANGUAGE plpgsql; SELECT * FROM u7();

Obviamente, data no pueden ser una columna de texto y una columna de marca de tiempo o fecha al mismo tiempo. Uso datetime_column_name para la columna de marca de tiempo, suponiendo que sea una timestamp de tiempo de tipo de datos.

Aparte de varios errores de sintaxis, no use la construcción con date_part() . De esta manera, tendría que procesar cada fila de la tabla y no podría usar un índice en datetime_column_name , que mi alternativa propuesta sí puede.

Consulte las respuestas relacionadas para obtener una explicación:

  • ¿La instrucción EXECUTE...INTO...USING en PL/pgSQL no se puede ejecutar en un registro?
  • Nombre de tabla como parámetro de función de PostgreSQL
  • ¿Cómo hago coincidir un día completo con un campo de fecha y hora?
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda