SQL-запрос разница в дате между двумя датами - PullRequest
1 голос
/ 23 марта 2012

Я пытаюсь сделать что-то, что я не знаю, выполнимо ли это. У меня есть этот запрос:

SELECT [CreatedOn]
ОТ [MyTable]

printscreen

Как вы можете видеть на изображении, есть разные даты. Теперь я хочу получить разницу во времени между каждой датой / временем в каждой строке. Например, разница между датой в строке1 и строке2, затем в строке2 и строке3 и т. Д. Это возможно? Спасибо, Лазиале

Ответы [ 4 ]

4 голосов
/ 23 марта 2012

Вы можете создать cte с номером строки, а затем внешнее соединение в следующей строке, чтобы получить дату

;with t as (
    SELECT 
        [CreatedOn],
        rn = row_number() over(order by [CreatedOn])
    FROM 
        [MyTable]
)

select
    t.[CreatedOn],
    secondsTilNext = datediff(s, t.[CreatedOn], tnext.[CreatedOn])
from
    t
    left outer join t tnext on tnext.rn = t.rn + 1
3 голосов
/ 23 марта 2012
;WITH q AS (
SELECT
    CreatedOn,
    ROW_NUMBER() OVER (ORDER BY CreatedOn) AS rn
FROM
    MyTable
)
SELECT
    q1.CreatedOn AS Date,
    q2.CreatedOn AS NextDate,
    DATEDIFF(SECOND, q1.CreatedOn, q2.CreatedOn) AS SecondDiff
FROM 
    q q1 JOIN
    q q2 ON q1.rn + 1 = q2.rn
0 голосов
/ 23 марта 2012

Попробуйте ввести дату MSDN Дата указаны

Или, возможно

    cast((date1-date2) as varchar(255))

Синтаксис может быть неправильным, сейчас я не могу его проверить.

0 голосов
/ 23 марта 2012

Предполагая, что вы используете C # для доступа к вашим данным, здесь есть хорошая ссылка: http://msdn.microsoft.com/en-us/library/aa287590(v=vs.71).aspx

В основном, код

DateTime oldDate = new DateTime(2002,7,15);
DateTime newDate = DateTime.Now;
// Difference in days, hours, and minutes.
TimeSpan ts = newDate - oldDate;
// Difference in days.
int differenceInDays = ts.Days;

Любой язык .NETвы должны поддерживать что-то похожее на это.Я делал то же самое в Python много раз.

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