Cómo obtener el primer y último día de cada mes en access

Es para una consulta, no código Visual Basic.

Como mismo existe la función Fecha(), que te devuelve la fecha actual, espero haya algo por el estilo para lo que me hace falta..

Quiero sabes la cantidad de días entre dos fechas:

1- Entre Una fecha dada y el último día del mes, algo como: LastDayInMonth - FechaDeterminada

2- Entre Una fecha dada y el primer día del mes, algo como: FechaDeterminada - FirstDayInMonth

2 Respuestas

Respuesta
1

Por ejemplo:

Function RT_PrimerDiaMes(Dia As Date) As Date
    RT_PrimerDiaMes = DateSerial(Year(Dia), Month(Dia), 1)
End Function
Function RT_UltimoDiaMes(Dia As Date) As Date
    RT_UltimoDiaMes = DateSerial(Year(Dia), Month(Dia) + 1, 1)
    RT_UltimoDiaMes = DateAdd("d", -1, RT_UltimoDiaMes)
End Function

Perdón que se me escapó 'er deo' ...

Y para saber la cantidad de días entre la fecha actual y el final de mes:

Diferencia = datediff("d", date, RT_UltimoDiaMes(date))

Añado al ver la respuesta de Jacinto, que veo que la mía no queda nada clara, ...

Dentro de una consulta se llamaría muy similar a lo que pone Jacinto:

HoyHastaFin: DifFecha("d";RT_UltimoDiaMes[CampoFecha];CampoFecha)

La diferencia es que el se crea un campo en la consulta para calcular el primer o el ultimo día del mes de esa fecha y después calcula la diferencia y yo el cálculo del primer/último día lo hago con una función.

Pienso que es mejor con una función ya que la vas a poder usar desde muchos sitios sin tener que volver a teclearla cada vez, ... pero para gustos los colores .. xD.

¡Gracias! miles, en realidad como no estoy ducho en esto de delcarar funciones y otras cosas uno siempre busca, por desconocimiento, la manera que cree más fácil al final lo implementé así como me dijo.. muchas gracias

Respuesta
3

Dariel: Ya que la pregunta me sale sugerida y dando por sentado que la contestación de Jesús es correcta empleando VBA, entiendo que lo que quieres es incorporar la Fórmula en un campo de una consulta.

IniMAct: SerieFecha(Año(Fecha());Mes(Fecha());1)

FinMAct: SerieFecha(Año(Fecha());Mes(Fecha())+1;0)

HoyMenosIni: DifFecha("d";[IniMAct];Fecha())

FinMenosHoy: DifFecha("d";Fecha();[FinMAct])

Mis saludos a los dos >> Dariel y Jesús

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas