Esta página esta muy interesante, contiene muchas funciones que se pueden usar para el manejo de fechas con Interbase/Firebird, muy útil si pensamos que se dejan de usar algunas UDF's cuando se hace uso de estas sencillas instrucciones SQL
funciones de fechas
Por ejemplo Tomando a D como la fecha en cuestion:
Dia de la semana:
EXTRACT(WEEKDAY FROM D)
regresa 0=Domingo, 1=Lunes, 2=Martes...6=Sabado
Primer dia del mes:
D - EXTRACT(DAY FROM D) + 1;
Ultimo dia del mes:
D - EXTRACT(DAY FROM D) + 32 - EXTRACT(DAY FROM D - EXTRACT(DAY FROM D) + 32)
Primer dia del siguiente mes:
D - EXTRACT(DAY FROM D) + 33 - EXTRACT(DAY FROM D - EXTRACT(DAY FROM D) + 32)
Número de dias del mes:
EXTRACT(DAY FROM (D - EXTRACT(DAY FROM D) + 32 - EXTRACT(DAY FROM D - EXTRACT(DAY FROM D) + 32)))
Saber si es año bisiesto debe evaluar a true lo siguiente:
( 2 = EXTRACT(MONTH FROM (D - EXTRACT(YEARDAY FROM D) + 59)) )
La semana del año empezando la semana en Lunes:
(EXTRACT(YEARDAY FROM D) - EXTRACT(WEEKDAY FROM D-1) + 7) / 7
Carlos:
ResponderBorrarEstoy haciendo una interfase con Firebird y no se como trabajar la funcion de fecha, el formato de la fecha (glrent.fecha) viene dado en : 2006-12-31 00:00:00,deseo agrupar por 2006-12, En otras bases de datos lo he manjedado como : SELECT YEAR TO MONT (glrent.fecha),no se como hacerlo en Firebird. El query donde lo estoy haciendo es el que sigue.
Agradezco su ayuda
heljim@novelsoft.com.co
SELECT glrent.fecha,
glrent.nit,
glrent.cuenta1,
glrent.cuenta2,
glrent.cuenta3,
glrent.cuenta4,
glrent.nomcuen,
glrent.empresa, SUM(glrent.debito),
SUM(glrent.credito)
ROM glrent
WHERE glrent.e = 1
AND glrent.s =1
GROUP BY glrent.fecha,
glrent.nit,
glrent.cuenta1,
glrent.cuenta2,
glrent.cuenta3,
glrent.cuenta4,
glrent.nomcuen,
glrent.empresa
ORDER BY glrent.fecha,