Necesito una manera de determinar el número de días entre dos fechas en SQL.

Respuesta debe ser en ANSI SQL.

OriginalEl autor David Wright | 2009-11-25

4 Comentarios

  1. 6

    ANSI SQL-92 define la FECHA – la FECHA como devolver un tipo de INTERVALO. Se supone que para ser capaz de extraer los valores escalares de los INTERVALOS utilizando el mismo método de extracción de las Fechas de usar – muy apropiadamente – el EXTRACTO de la función (4.5.3).

    <extracto de la expresión> opera en
    un datetime o de intervalo y devuelve un
    exacto valor numérico que representa la
    valor de uno de los componentes de la datetime
    o de intervalo.

    Sin embargo, esto está muy mal implementado en la mayoría de las bases de datos. Probablemente estás atascado con algo de base de datos específico. DATEDIFF está bastante bien implementado a través de diferentes plataformas.

    Aquí es la «verdadera» forma de hacerlo.

    SELECT EXTRACT(DAY FROM DATE '2009-01-01' - DATE '2009-05-05') FROM DUAL;

    Buena suerte!

    OriginalEl autor Monkey Boson

  2. 3

    No puedo recordar el uso de un RDBMS que no apoyo FECHA1-DATE2 y SQL 92 parece estar de acuerdo.

    SQL Server no admite que
    Seguro que parece tan: SELECT GETDATE() - (GETDATE() - 5) => 1900-01-06 00:00:00.000
    getdate() - getdate() debe devolver 0 no 1900-01-01 de acuerdo con el estándar SQL

    OriginalEl autor Jonas Elfström

  3. 1

    Creo que el estándar SQL-92 apoya restando dos fechas con el ‘-‘ operador.

    OriginalEl autor Andy West

  4. 0

    SQL 92 admite la sintaxis siguiente:

    t.date_1 - t.date_2

    El EXTRACTO de la función también es ANSI, pero no es compatible con SQL Server. Ejemplo:

    ABS(EXTRACT(DAY FROM t.date_1) - EXTRACT(DAY FROM t.date_2)

    Envolver el cálculo de una función de valor absoluto garantiza el valor será positivo, aunque menor fecha de la primera fecha.

    EXTRACTO es compatible con:

    • Oracle 9i+
    • MySQL
    • Postgres
    Si extrae a partir de la FECHA antes de la resta, entonces el cálculo sólo funciona si las dos fechas están en el mismo mes.
    Además de EXTRAER, MS SQL server no admite también restar operador entre dos fechas. «Operando tipo de datos fecha no es válida para restar operador.»

    OriginalEl autor OMG Ponies

Dejar respuesta

Please enter your comment!
Please enter your name here