Jump to content


Photo

Formato Fecha en Firebird; incluyendo dos variables externas C#


  • Please log in to reply
3 replies to this topic

#1 ematrix

ematrix

    Member

  • Miembros
  • PipPip
  • 25 posts
  • LocationMExico

Posted 07 July 2011 - 05:50 PM

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
  • 1484 posts
  • LocationMallorca

Posted 08 July 2011 - 02:08 AM

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
  • 1092 posts
  • LocationMurcia, España

Posted 08 July 2011 - 03:50 AM

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 posts
  • LocationMExico

Posted 08 July 2011 - 05:32 AM

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




IP.Board spam blocked by CleanTalk.