Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Пересечение периодов дат  [new]
Eugenia79
Member

Откуда:
Сообщений: 27
Имеется заданный период, например 01.01.2011 - 31.12.2011.
Нужно определить, пересекается ли другой период дат с выше заданным хотя бы в одном дне.
Конечная дата может быть пустой - считаем ее тогда бесконечной.
К примеру, такие периоды должны дать положительный результат:
01.02.2011 - 15.02.2011
01.12.2010 - 31.01.2011
01.12.2011 - 31.01.2012
01.12.2010 - 'пусто'

а эти - отрицательный:
01.12.2010 - 31.12.2012
01.01.2012 - 31.01.2012

Мне достаточно только формулу словами описать, на SQL сама переведу.
Спасибо.
28 мар 12, 15:49    [12328168]     Ответить | Цитировать Сообщить модератору
 Re: Пересечение периодов дат  [new]
qwerty112
Guest
Eugenia79
Имеется заданный период, например 01.01.2011 - 31.12.2011.
Нужно определить, пересекается ли другой период дат с выше заданным хотя бы в одном дне.
Конечная дата может быть пустой - считаем ее тогда бесконечной.
К примеру, такие периоды должны дать положительный результат:
01.02.2011 - 15.02.2011
01.12.2010 - 31.01.2011
01.12.2011 - 31.01.2012
01.12.2010 - 'пусто'

а эти - отрицательный:
01.12.2010 - 31.12.2012
01.01.2012 - 31.01.2012

Мне достаточно только формулу словами описать, на SQL сама переведу.
Спасибо.

энтересна,
а почему этот - "положительный ", а этот - "отрицательный"
28 мар 12, 15:52    [12328206]     Ответить | Цитировать Сообщить модератору
 Re: Пересечение периодов дат  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Eugenia79
Мне достаточно только формулу словами описать.
Формула настолько проста, что даже как-то неловко...
Начальная дата одного периода должна быть не больше конечной даты другого,
а конечная дата первого - не меньше начальной даты второго.
28 мар 12, 16:00    [12328268]     Ответить | Цитировать Сообщить модератору
 Re: Пересечение периодов дат  [new]
Xotabach
Member

Откуда:
Сообщений: 5
Словами и не оглядываясь на справедливое замечание qwerty112:
"Находится ли начало или окончание периода Б в периоде A"
28 мар 12, 16:00    [12328272]     Ответить | Цитировать Сообщить модератору
 Re: Пересечение периодов дат  [new]
Eugenia79
Member

Откуда:
Сообщений: 27
01.12.2010 - 31.12.2012 - опечатка, должно быть 01.12.2010 - 31.12.2010

Да, формула действительно элементарная!
Спасибо.
28 мар 12, 16:03    [12328307]     Ответить | Цитировать Сообщить модератору
 Re: Пересечение периодов дат  [new]
Eugenia79
Member

Откуда:
Сообщений: 27
Xotabach
"Находится ли начало или окончание периода Б в периоде A"
а вот это не совсем так, период Б может полностью перекрывать период А.
28 мар 12, 16:05    [12328325]     Ответить | Цитировать Сообщить модератору
 Re: Пересечение периодов дат  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3757
скрипт для нахождения пересекающихся периодов в таблице

Select * 
from [table] t1
inner join [table] t2 on t1.PK > t2.PK and t1.StartDate <= isnull(t2.EndDate,'9999-12-31') and isnull(t1.EndDate,'9999-12-31') >= t2.StartDate
28 мар 12, 17:14    [12328981]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить