Как получить разницу между датами в SQL - PullRequest
0 голосов
/ 03 апреля 2019

Я видел другие ответы, но у меня другой вопрос, потому что я хочу получить разницу между двумя датами и использовать ее в предложении where, но он просит меня ввести дни, чтобы получить разницу. Даты приходят из моей базы данных.

Select datediff(D, cid, ced) as theDateDiff
from customers 

Select datediff(D, cid, ced) as theDateDiff
from customers where theDateDiff>=5

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Рассмотрим следующие две проблемы, связанные с вашим MS Access SQL:

  1. В большинстве случаев, за некоторыми исключениями, вы не можете использовать псевдоним вычисляемого столбца в других частях запроса того же уровня.Однако вы можете использовать такой псевдоним, если находитесь в другом запросе или подзапросе.

    SELECT *
    FROM (SELECT *, DateDiff("d", cid, ced) AS theDateDiff
          FROM customers) sub  
    where theDateDiff >= 5
    
  2. Функция DateDiff в MS Access отличается от DateDiff SQL Server, где последняя представляется версией, которую вы используете, и в качестве первого аргумента без кавычек D.Помните, что в мире реляционных баз данных нет двух одинаковых диалектов, даже если они принадлежат одной материнской компании.

    Поэтому замените DateDiff(D, cid, ced) на DateDiff("d", cid, ced).

    Чтобы привести еще один пример, отличный от Microsoft, Oracle (компания) теперь управляет MySQL, который представляет собой совершенно другую СУБД с совершенно другим диалектом, чем флагманбаза данных: Oracle.

1 голос
/ 03 апреля 2019

Предполагая, что cid и ced являются полями в вашей таблице customers, вы можете попробовать следующее:

select * from customers c where datediff("d", c.cid, c.ced) >= 5
...