Aquí dejo un pequeño script para calcular el primer día de la quincena actual.
Básicamente, hace lo siguiente:
- Elimina la parte de hora de la fecha actual. No es que influya en los cálculos, pero así el resultado sera una fecha con 0 horas y 0 minutos.
- En función del día del mes, calcula el día de inicio de la quincena. 1 para fechas anteriores al 16, 15 para posteriores al 15.
- A la fecha actual le suma el día que necesitamos (1 o 15), menos el día actual del mes.
declare @fechaActual datetime = convert(date, getdate())
declare @fechaQuincenaActual datetime
declare @dias int
set @dias = case when day(@fechaActual) < 16 then 1 else 15 end
set @fechaQuincenaActual = dateadd(day, @dias-day(@fechaActual), @fechaActual)
select @fechaQuincenaActual
Aunque sea para SQL Server (Transact-SQL), creo que sería fácilmente adaptable a cualquier otro sabor de SQL