Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   fecha de inicio del mes de una fecha especifica (https://www.clubdelphi.com/foros/showthread.php?t=62506)

JoseAntonio 30-12-2008 00:07:49

fecha de inicio del mes de una fecha especifica
 
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
Código SQL [-]
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?

Cita:

Empezado por hecospina (Mensaje 332549)
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 [-]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...

Código SQL [-]
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 ;)

Cita:

Empezado por jhonny (Mensaje 332606)
Pues yo tampoco entiendo muy bien la pregunta, tal vez lo que quieres es...


Código SQL [-]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:

Código SQL [-]
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


Cita:

Empezado por jhonny (Mensaje 332640)
Ahhh, entendido... de pronto se me ocurre que si estas usando Firebird 2.1 o superior, puedes hacer lo siguiente:


Código SQL [-]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 [-]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

Código SQL [-]
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


La franja horaria es GMT +2. Ahora son las 15:47:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi