none
Ayuda DateDiff para calcular la frecuencia de un valor RRS feed

  • Pregunta

  • Hola
    Para un proyecto que estoy haciendo, necesito calcular la diferencia de dias que pasan entre la fecha actual, y la fecha donde aparece un valor.

    Mi tabla es la siguiente:

    [FECHA] [datetime] NULL,
    [Sorteo] [nvarchar](255) NULL,
    [TipoSorteo] [nvarchar](20) NULL,
    [N1] [nvarchar](2) NULL,
    [N2] [nvarchar](2) NULL,
    [N3] [nvarchar](2) NULL,
    [N4] [nvarchar](2) NULL,
    [N5] [nvarchar](2) NULL,
    [N6] [nvarchar](2) NULL

    El query que hice es el siguiente:

    SELECT GETDATE() as FechaActual,
    DATEDIFF(day, [FECHA], GETDATE()) as Diferencia
    FROM MITABLA
    where [N1] = '26' or [N2] = '26' or [N3] = '26' or [N4] = '26' or [N5] = '26' or [N6] = '26' and [TipoSorteo] = 'SORTEOXXXX'
    order by [SORTEO] desc

    Yo se que pasaron 23 dias entre la fecha actual, y la fecha donde aparecio el numero 26, pero mi query me dice que la diferencia es 17.

    ¿Que estoy haciendo mal?

    Uso MS-SQL 2008 EXPRESS.

    Muchas gracias
    sábado, 15 de abril de 2017 23:53

Respuestas

  • El query que te proporciona Brayan de la Cruz es correcto, puedes verificar el tipo de datos que tiene la columna fecha o por otro lado agrega la columna de Fecha y verifica si el calculo es el correcto asi:

    SELECT GETDATE() as FechaActual,
    Fecha AS Fecha_calcular,
    (Select DATEDIFF(day, [FECHA], GETDATE())) as Diferencia
    FROM MITABLA
    where ([N1] = '26' or [N2] = '26' or [N3] = '26' or [N4] = '26' or [N5] = '26' or [N6] = '26') and ([TipoSorteo] = 'SORTEOXXXX')
    order by [SORTEO] desc

    Saludos,

    Jorge Muchaypiña G.


    Business Intelligence Analyst

    lunes, 17 de abril de 2017 16:36

Todas las respuestas

  • oknarf1976

    Inténtalo así

    SELECT GETDATE() as FechaActual,
    (Select DATEDIFF(day, [FECHA], GETDATE())) as Diferencia
    FROM MITABLA
    where ([N1] = '26' or [N2] = '26' or [N3] = '26' or [N4] = '26' or [N5] = '26' or [N6] = '26') and ([TipoSorteo] = 'SORTEOXXXX')
    order by [SORTEO] desc
    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.


    sábado, 15 de abril de 2017 23:59
  • Hola

    Muchas gracias por responder.

    Ese query ahora me devuleve lo siguiente:

    SELECT GETDATE() as FechaActual,
    (Select DATEDIFF(DD, [FECHA], GETDATE())) as Diferencia
    FROM [LOTO].[dbo].[lotoSorteos15abr17c]TABLA
    where ([N1] = '26' or [N2] = '26' or [N3] = '26' or [N4] = '26' or [N5] = '26' or [N6] = '26') and ([TipoSorteo] = 'xxxxxxxx')
    order by [SORTEO] desc

    FechaActual    Diferencia
    2017-04-15 21:12:22.630    87

    Un numero muy extraño...

    domingo, 16 de abril de 2017 0:13
  • Pero qué valor tiene el campo fecha?

    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    domingo, 16 de abril de 2017 0:21
  • ...Ese query ahora me devuelve lo siguiente:

    FechaActual    Diferencia
    2017-04-15 21:12:22.630    87

    Un numero muy extraño...

    El resultado con el que no estas de acuerdo nada tiene que ver con el funcionamiento de la función DATEDIFF() que lo único que hace es contar la cantidad de días que hay entre dos intervalos de fecha, la operación es una simple aritmética de fechas, nada complejo, en consecuencia debes mirar los datos que usas para el cálculo, bastante probable que las inconsistencias tengan ese origen. 


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 16 de abril de 2017 23:12
  • Hola

    El campo que tiene la fecha es [FECHA], que es un datetime.

    Lo que estoy tratando de hacer es saber cuantos dias pasaron desde la fecha actual (usando el getdate) y otra fecha cualquiera en el campo fecha, pero pasandole un valor que puede estar en alguna de estas columnas:

    [N1],[N2],[N3],[N4],[N5],[N6]

    Dicho de otra manera: si el numero 26 aparecio en la columna 1 o columna 2 o columna 3, quiero saber cuantos dias pasaron entre la fecha en que salio el numero, y la fecha actual, obtenida con getdate.

    Muchas gracias

    lunes, 17 de abril de 2017 14:26
  • Entonces esta mal el query?

    Yo lo que quiero hacer es esto: si el numero 26 aparecio en la columna 1 o columna 2 o columna 3 o cualquier columna, quiero saber cuantos dias pasaron entre la fecha en que salio el numero, y la fecha actual, obtenida con getdate.

    Muchas gracias

    lunes, 17 de abril de 2017 14:27
  • El query que te proporciona Brayan de la Cruz es correcto, puedes verificar el tipo de datos que tiene la columna fecha o por otro lado agrega la columna de Fecha y verifica si el calculo es el correcto asi:

    SELECT GETDATE() as FechaActual,
    Fecha AS Fecha_calcular,
    (Select DATEDIFF(day, [FECHA], GETDATE())) as Diferencia
    FROM MITABLA
    where ([N1] = '26' or [N2] = '26' or [N3] = '26' or [N4] = '26' or [N5] = '26' or [N6] = '26') and ([TipoSorteo] = 'SORTEOXXXX')
    order by [SORTEO] desc

    Saludos,

    Jorge Muchaypiña G.


    Business Intelligence Analyst

    lunes, 17 de abril de 2017 16:36