Разница между двумя датами - PullRequest
0 голосов
/ 18 августа 2011

Я написал несколько запросов о SQL Server для изучения.

Интересно, как я могу получить разницу сегодняшнего дня между 90 днями назад в SQL-запросе?

Ответы [ 4 ]

2 голосов
/ 18 августа 2011

Вы хотите DATEADD , а не DATEDIFF, и вам нужно решить, нужно ли вам 90 дней назад:

SELECT DATEADD(day,-90,CURRENT_TIMESTAMP)

или 3 месяца назад:

SELECT DATEADD(month,-3,CURRENT_TIMESTAMP)
2 голосов
/ 18 августа 2011
DATEDIFF

http://msdn.microsoft.com/en-us/library/ms189794.aspx

DECLARE @90DaysAgo datetime
        ,@Today datetime

SET @90DaysAgo = DATEADD(d, -90, GETDATE())
SET @Today = GETDATE()

SELECT DATEDIFF(d, @90DaysAgo, @Today) --Returns 90
0 голосов
/ 18 августа 2011

Это будет правильно округлять до полуночи дня 3 месяца назад (не 90 дней назад), что, по-видимому, является тем, что вы хотите (08-18 -> 05-18 - это 92 дня, так как там было два 31 числа).

...
WHERE column >= DATEADD(MONTH, -3, 
    DATEADD(DAY, DATEDIFF(DAY, '20000101', CURRENT_TIMESTAMP), '20000101'));
0 голосов
/ 18 августа 2011

попробуйте это, чтобы вернуть дату и время ровно 90 лет назад:

SELECT GETDATE()-90

output:

-----------------------
2011-05-20 10:55:12.360

(1 row(s) affected)

это даст вам дату только 90 дней назад, свремя 00: 00: 00.000:

SELECT DATEADD(day,DATEDIFF(day,0,GETDATE()),-90)

вывод:

-----------------------
2011-05-20 00:00:00.000

(1 row(s) affected)
...