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

221
Vistas
Complete la tabla con fecha y causa año y mes (postgresql, javascript)

Tengo esta tabla con una columna de fecha:

fecha hora fol
2022-03-04 16:40 1
2022-04-05 18:20 2
2022-04-06 13:20 3

Necesito extraer el año y el mes que usé, así que usé esta consulta:

 select fecha, extract(month from fecha) = 3 as mes, EXTRACT(YEAR FROM fecha) = 2022 as anio, hora, folio from table;

Yo obtengo:

fecha mes año hora fol
2022-03-04 verdadero verdadero 16:40 1
2022-04-05 falso verdadero 18:20 2
2022-04-06 falso verdadero 13:20 3

Solo necesito las filas donde mes y anio son true , pero la cláusula WHERE no reconoce a mes y anio como columnas de la tabla.

En cambio, recibí el siguiente error:

 ERROR: column "mes" does not exist LINE 1: ..._medicion from medicion where r_fisico = true and mes = true... ^ SQL state: 42703 Character: 353

Necesito estos valores para un <input type='month' />

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Un enfoque utilizando sub-consulta.

Básicamente, ajuste su consulta con otra selección y coloque la condición WHERE afuera.

 SELECT * FROM ( SELECT fecha, EXTRACT(MONTH FROM fecha) = 3 AS mes, EXTRACT(YEAR FROM fecha) = 2022 AS anio, hora, folio FROM table ) t WHERE t.anio = true and t.mes = true;
about 4 years ago · Juan Pablo Isaza Denunciar

0

Su problema se deriva de la secuencia en que se procesa cada fase de la instrucción SQL. El alias de la columna se asigna a medida que se procesa la list de selección, sin embargo, la cláusula where se procesa antes que la list de selección. Por lo tanto, el alias asignado no existe cuando se procesa la cláusula where . Básicamente tienes tres opciones:

Extraiga los valores (con alias) en una subselección (o CTE) y luego seleccione con where hace referencia al alias.

 select * from ( select fecha , extract(month from fecha) = 3 as mes , extract(year froM fecha) = 2022 as anio , hora , folio from table ) where mes = true and anio = true;

Repita la evaluación para mes y anio (sin el alias real).

 select fecha , extract(month from fecha) = 3 as mes , extract(year froM fecha) = 2022 as anio , hora , folio from table where extract(month from fecha) = 3 and extract(year froM fecha) = 2022 ;

Reescriba con where haciendo referencia solo a la fecha en sí.

 select fecha , extract(month from fecha) = 3 as mes , extract(year froM fecha) = 2022 as anio , hora , folio from table where date_trunc('month', fecha) = date '2022-03-01';

Nota Ninguno probado.

about 4 years ago · Juan Pablo Isaza 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