Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

97
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda