PDA

Ver la Versión Completa : fecha de inicio del mes de una fecha especifica


JoseAntonio
30-12-2008, 00:07:49
Holas, quisiera saber como obtener la fecha de inicio del mes de una fecha especifica del tipo date, gracias de antemano

JOSe :)

hecospina
30-12-2008, 02:58:41
Hola JoseAntonio
Realmente no se lo que quieres, tu pregunta no es clara, regularmente todos los meses empiezan el 01, si lo que quieres saber es el dia o sea domingo, lunes, martes etc, en firebird puedes hacer un select que te trae el dia de la semana
select (weekday from fecha) from tabla
esto de da como respuesta 0 domingo, 1 lunes y asi sucesivamente, convinado como un case o con un iif puedes tener como respuesta,
por ejemplo

lunes 29/12/2008

Espero te ayude o expliques mejor tu pregunta

Suerte :rolleyes:

JoseAntonio
30-12-2008, 13:47:58
Hola Ecospina; parametro de entrada: 29/11/2008 .... parametro de salida: 1/11/2008, en delphi es sencillo pero nose como lo hacen en firebird, quizas con algun decodedate o algo analogo?

Hola JoseAntonio
Realmente no se lo que quieres, tu pregunta no es clara, regularmente todos los meses empiezan el 01, si lo que quieres saber es el dia o sea domingo, lunes, martes etc, en firebird puedes hacer un select que te trae el dia de la semana
Código SQL [-] (http://www.clubdelphi.com/foros/#)select (weekday from fecha) from tabla

esto de da como respuesta 0 domingo, 1 lunes y asi sucesivamente, convinado como un case o con un iif puedes tener como respuesta,
por ejemplo

lunes 29/12/2008

Espero te ayude o expliques mejor tu pregunta

Suerte :rolleyes:

jhonny
30-12-2008, 14:59:13
Pues yo tampoco entiendo muy bien la pregunta, tal vez lo que quieres es...

select extract(day from fecha) from tabla

JoseAntonio
30-12-2008, 15:27:25
la idea es como creo un store con estos parametros de entrada y salida

parametro de entrada: 29/11/2008 .... parametro de salida: 1/11/2008 en firebird,
el parametro de entrada puede ser cualquier fecha, y el parametro de salida tiene que devolver siempre el inicio del mes, (en formato date) lo necesito esto para generar la fecha de inicio del periodo, que es un campo que se autogenera o autocalcula en el beforeinsert de una tabla, vaya no pense dar tantos detalles, gracias de nuevo. espero esta vez si haber sido claro ;)

Pues yo tampoco entiendo muy bien la pregunta, tal vez lo que quieres es...


Código SQL [-] (http://www.clubdelphi.com/foros/#)select extract(day from fecha) from tabla

jhonny
30-12-2008, 16:55:31
Ahhh, entendido... de pronto se me ocurre que si estas usando Firebird 2.1 o superior, puedes hacer lo siguiente:

CREATE PROCEDURE SP_PRIMER_DIA (
FECHA_ENTRADA date)
returns (
FECHA_SALIDA date)
as
declare variable DIAS integer;
begin
dias = extract(day from :fecha_entrada);
fecha_salida = dateadd(day, :dias*(-1)+1, :fecha_entrada);
suspend;
end

Espero te sirva. ;)

JoseAntonio
30-12-2008, 18:09:27
Elegante solucion, aun no lo implemento pero ya se ve que funcionara, gracias amigo y feliz año 2009 :D


Ahhh, entendido... de pronto se me ocurre que si estas usando Firebird 2.1 o superior, puedes hacer lo siguiente:


Código SQL [-] (http://www.clubdelphi.com/foros/#)CREATE PROCEDURE SP_PRIMER_DIA (
FECHA_ENTRADA date)
returns (
FECHA_SALIDA date)
as
declare variable DIAS integer;
begin
dias = extract(day from :fecha_entrada);
fecha_salida = dateadd(day, :dias*(-1)+1, :fecha_entrada);
suspend;
end




Espero te sirva. ;)

hecospina
01-01-2009, 02:42:52
Hola
Tambien podrias hacer un select parecido a este

Código SQL [-] (http://www.clubdelphi.com/foros/#)select cast(cast(extract(month from fecha) AS CHAR(2))||'/'||01||'/'||CAST(extract(year from fecha)) AS CHAR(4)) as date) as fechainicio
from tabla (

hecospina
01-01-2009, 02:43:53
Hola
Tambien podrias hacer un select parecido a este

select cast(cast(extract(month from fecha) AS CHAR(2))||'/'||'01'||'/'||CAST(extract(year from fecha)) AS CHAR(4)) as date) as fechainicio
from tabla