Ir al contenido



Foto

Formato Fecha en Firebird; incluyendo dos variables externas C#


  • Por favor identifícate para responder
3 respuestas en este tema

#1 ematrix

ematrix

    Member

  • Miembros
  • PipPip
  • 25 mensajes
  • LocationMExico

Escrito 07 julio 2011 - 05:50

realizo una busqueda de intervalo de fecha en la consola de Firebird ejemplo:

[firebird]SELECT * FROM INCIDEN WHERE (INCIDEN.FECHOR_INCI <= '2011-06-17' AND INCIDEN.FECHOR_INCI >= '2011-06-15')[/firebird]

el codigo en monitor de SQL de FIREBIRD funciona muy bien



ahora  transcribir en c# sharp como?



bueno en San Google
gracias a esta pagina

http://www.kriptus.c...a-formato-ansi/
encontré la forma y lo pase a C#, pero no furula.

lo que me paso fue que al pasar al select lo pasaba en formato "date" del "dateTimePicker1", claro esta que windows en su formato cultural español no coincide.

lo que debe ser es pasarlo en formato texto. "yyy/MM/dd"

aunque me faltaba algo como hacerlo para meter
dos variables externas al SELECT y que no pertenecen a la tabla para establecer el intervalo de fecha  inicio y fecha final de busqueda. y la luz se dio.

[csharp]string  fecha_ini= string)dateTimePicker1.Value.ToString("yyyy/MM/dd");
    string fecha_fin=(string)dateTimePicker2.Value.ToString("yyyy/MM/dd");
    FbParameter f1 =new FbParameter();
    FbParameter f2 =new FbParameter();
    string db3 = conectarbase();
    FbConnection conexiongpos= new FbConnection(db3);
    try{

DataSet ds = new DataSet();
  FbCommand SqlAlu= new FbCommand("select INCIDEN.ID_INCIDEN, INCIDEN.ID_MATRIX, INCIDEN.ID_GPOPER, INCIDEN.DETALLE_INCI FROM INCIDEN WHERE (INCIDEN.FECHOR_INCI BETWEEN @f1 AND @f2) ORDER BY INCIDEN.ID_GPOPER",conexiongpos);
  f1 = SqlAlu.Parameters.Add("@F1", SqlDbType.VarChar);
f2 = SqlAlu.Parameters.Add("@F2", SqlDbType.VarChar);
                f1.Value =fecha_ini;
                f2.Value =fecha_fin;
conexiongpos.Open();
FbDataReader leeralums = SqlAlum.ExecuteReader(CommandBehavior.SequentialAccess);[/csharp]
  • 0

#2 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.467 mensajes
  • LocationMallorca

Escrito 08 julio 2011 - 02:08

Hola.

Si declaras los parámetros @F1 y @F2 como de tipo DateTime/Timestamp/... ..., en lugar de tipo cadena, entonces no vas a tener que darles ningún formato.

Saludos.
  • 0

#3 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 08 julio 2011 - 03:50

Si quieres pasarlas como cadena por alguna razón, has de usar el formato '01.12.2011' para que lo entienda en formato "europeo" (dd.mm.yyyy).
  • 0

#4 ematrix

ematrix

    Member

  • Miembros
  • PipPip
  • 25 mensajes
  • LocationMExico

Escrito 08 julio 2011 - 05:32

En si realice la prueba en formato Fecha, como comentas Marc.

solo que windows tiene por default en español la fecha dd-MM-yyyy, y en servidor linux que tengo instalado el Firebird esta en formato yyyy-MM-dd, es por eso que batalle un poco en C#, y
revisando la variable f1 y f2 en memoria lo toma por default del sistema operativo windows. y la clave es pasarlo en texto convertirlo y después hacer la operación.



Gracias por sus comentarios

Sergio y Marc

Saludos.
  • 0