locked
Restar dos fechas en Linq to SQL RRS feed

  • Pregunta

  • Saludos a todos,  tengo que restar dos fechas que estan en mi mdb, y que me de la diferencias en meses que hay, por ejemplo

    2/2/2009   -   15/4/2009  = El resultado debe ser:  3 Meses


    gracias
    Desarrollo de Sistemas
    martes, 30 de junio de 2009 4:44

Respuestas

  • Saludos A todos,  la verdad pense que era mas dificil pero en realidad fue super facil, con linq tambien existen los metodos o funciones que tiene sql server, solo tenia que saber en que nombre de espacio estaba y listo

    using

     

    System.Data.Linq.SqlClient

    en este espacio de nombre hay muchos metodos, pero solo me voy a referir al SqlMethods. ?, solo tienes que escoje la que mejor se adapte a tu proyecto y de igual forma obtendrá los resultados. asi que les dejo la diferencias y las equivalentes, para que si alguien en un futuro la necesite.

    Gracias y saludos a todos.  estamos para compartir nuestros conocimientos y darle el toque que todos necesitamos, porque esto nunca acaba....

    con T-SQL es:

    SET

     

    DATEFORMAT DMY
    SELECT DATEDIFF(MONTH, [FultimoContactado], GETDATE()) as Diferencia
    FROM [ES].[tbcontactos] AS pa

    y te da la diferencia en meses con

    LINQ to SQL es:

    paDataContext

     

    dc = new paDataContext();

     

    var dat = from dt in dc.tbcontactos
    where SqlMethods.DateDiffMonth(dt.FultimoContactado, DateTime.Now) = a tu condición
    orderby dt.FultimoContactado
    select  dt;

     


    y ya queda todo bien, en realidad solo hay que jugar mas con LINQ y aprenderas muchas cosas que antes tenias que hacer bastante línea de codigo para
    tener los resultados.

    Estamos a la orden cualquier consulta me escriben  y si me la se te la respondo....


    Desarrollo de Sistemas
    jueves, 2 de julio de 2009 5:08

Todas las respuestas

  • En este ejemplo hago el calculo de la diferencia entre dos fechas, tu puedes utilizar la propiedad Month de la fecha para saber en que mes se encuentra, por ejemplo results.ShippedDate.value.Month - results.OrderDate.Value.Month, pero el calculo no va a ser preciso, ya que hay muchos factores involucrados como son las diferencias de días entre los meses etc. Pero básicamente este ejemplo te debe de regresar un valor en días con el que puedes comenzar a hacer los cálculos que requieres.

    Dim db As New NWDataContext
    Dim w = From results In db.Orders Select results.OrderDate, results.ShippedDate, s = results.OrderDate.Value - results.ShippedDate.Value
    For Each item In w
          Console.WriteLine(item.s.Days)

    Next

    Saludos
    Developer Evangelist Mexico
    • Propuesto como respuesta Jaime Sanchez jueves, 2 de julio de 2009 4:48
    jueves, 2 de julio de 2009 4:46
  • Saludos A todos,  la verdad pense que era mas dificil pero en realidad fue super facil, con linq tambien existen los metodos o funciones que tiene sql server, solo tenia que saber en que nombre de espacio estaba y listo

    using

     

    System.Data.Linq.SqlClient

    en este espacio de nombre hay muchos metodos, pero solo me voy a referir al SqlMethods. ?, solo tienes que escoje la que mejor se adapte a tu proyecto y de igual forma obtendrá los resultados. asi que les dejo la diferencias y las equivalentes, para que si alguien en un futuro la necesite.

    Gracias y saludos a todos.  estamos para compartir nuestros conocimientos y darle el toque que todos necesitamos, porque esto nunca acaba....

    con T-SQL es:

    SET

     

    DATEFORMAT DMY
    SELECT DATEDIFF(MONTH, [FultimoContactado], GETDATE()) as Diferencia
    FROM [ES].[tbcontactos] AS pa

    y te da la diferencia en meses con

    LINQ to SQL es:

    paDataContext

     

    dc = new paDataContext();

     

    var dat = from dt in dc.tbcontactos
    where SqlMethods.DateDiffMonth(dt.FultimoContactado, DateTime.Now) = a tu condición
    orderby dt.FultimoContactado
    select  dt;

     


    y ya queda todo bien, en realidad solo hay que jugar mas con LINQ y aprenderas muchas cosas que antes tenias que hacer bastante línea de codigo para
    tener los resultados.

    Estamos a la orden cualquier consulta me escriben  y si me la se te la respondo....


    Desarrollo de Sistemas
    jueves, 2 de julio de 2009 5:08
  • hola a todos... pues para comenzar tengo un codigo en wcfservice.svc.cs donde quiero
    restar dos fechas y obtener los anos el cual es el siguiente ya que lo saque de este blog:

    #region Miembros de IService1


            public List<Viajes> eventovacaciones(DateTime FechaAlta)
            {
                DataClasses1DataContext db = new DataClasses1DataContext();
                var vacas = from d in db.Viajes
                            where SqlMethods.DateDiffYear(d.FechaAlta, DateTime.Now) = 3
                            orderby d.FechaAlta
                            select d;
                return vacas.ToList();
            }

    #endregion


    pero me sale un error que dice que no se puede convertir implicitamente el tipo int en bool

    ademas lo que quiero es que me de el resultado de los anos para yo manipular ese dato en otras operaciones, me podrian ayudar???

    jueves, 8 de octubre de 2009 7:13