Как получить разницу между двумя значениями даты и времени? - PullRequest
2 голосов
/ 14 ноября 2011

Мне трудно получить разницу между двумя значениями даты и времени.

Например:

col1               col2 
----------         ----------
11-04-2011         22-05-2033
12-05-2010         24-06-2045

и набор результатов должен выглядеть примерно так:

11-01-2022

12-01-2035

Спасибо всем,

Шашра

Ответы [ 3 ]

1 голос
/ 14 ноября 2011

Используя DATEDIFF, выясните, сколько дней находится между двумя датами.

Половина этого значения.

Затем используйте DATEADD и добавьте половину дней к первой дате.

declare @d1 datetime
,@d2 datetime

set @d1 = '11/4/2011'
set @d2 = '22/5/2033'

SELECT DATEADD(d, (DATEDIFF(d, @d1, @d2)/2), @d1)

Поэтому в своем запросе вы должны использовать:

SELECT DATEADD(d, (DATEDIFF(d, col1, col2)/2), col1)
FROM [Table]
0 голосов
/ 14 ноября 2011

Что ж, если вы действительно хотите сделать это, то одно решение:

  1. Получите значения дня, месяца и года для каждой даты для различных переменных;
  2. Вычтите каждый день, переменные месяца и года;
  3. Добавьте 2000 лет к результирующему значению года;
  4. Создайте дату с результирующим днем, месяцем и годом.

Возможно, вынеобходимо использовать курсор для выборки каждой строки по отдельности.

0 голосов
/ 14 ноября 2011

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

Такая путаница встречается чаще, чем принято считать.

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