Tengo la tabla con una de las columnas con la fecha en formato 'AAAA-MM-DD'. ¿Puedo usar seleccionar para obtener todos los datos en un rango mensual? Supongamos que quiero todos los datos desde 2012-01-xx hasta 2013-04-xx. Así que estoy básicamente en busca de una consulta SQL como el que se indica a continuación:Postgresql seleccione entre el rango de mes
SELECT * FROM table WHERE date IN BETWEEN '2012-01' AND '2013-04' (INVALID QUERY)
Dado que todos los meses comienzan con '01' Puedo modificar la consulta anterior para ajustar la condición de arranque.
SELECT * FROM table WHERE date IN BETWEEN '2012-01-01' AND '2013-04' (INVALID QUERY)
Ahora el problema viene con la fecha de finalización. Tengo que calcular manualmente la última fecha para el mes dado, tomando todos los factores en cuenta como la duración del mes, año bisiesto, etc., ya que la consulta falla si la fecha dada no es válida. Así que actualmente estoy haciendo algo como esto:
SELECT * FROM table WHERE date IN BETWEEN '2012-01-01' AND 'VALID_MONTH_END_DATE' (VALID Query)
me gustaría saber si hay alguna manera de evitar este cálculo fecha de finalización válida?
Aclaración
he pensado por encima del primer día del siguiente mes, pero aún así voy a tener que aplicar un poco de lógica decir, si es de diciembre, el próximo mes sería de enero del próximo año. Quería saber si una solución SQL solo es posible?
superposiciones funciona bien cuando sé que la última fecha. Estoy atascado cuando el último mes es diciembre. –
¿De dónde obtienes los parámetros? ¿Una aplicación? ¿La web? ¿Otra pregunta? ¿Los tienes como cadenas o enteros (año, mes)? –
Se debe tener cuidado al agregar un 'intervalo' a una 'fecha'. El resultado es una 'marca de tiempo'. Sin embargo, funciona en el ejemplo anterior. Lanza el resultado a 'date', si es importante. Agregar un intervalo 'n mes' siempre da como resultado el mismo día del mes, independientemente de la cantidad real de días en los meses involucrados, o el día máximo disponible, cuando el mes resultante tiene menos días. Para agregar un número exacto de días, agregue un 'entero' a una' fecha', esto da como resultado una 'fecha'. –