2015-07-08 5 views
1

мне нужно найти пересекаются между до интервалов дат, напримерIntersect между двумя даты интервалы

У меня есть одна дата

2015-01-01 and 2015-03-01 

и второе значение

2015-01-01 and 2015-01-15 

Я хочу получить результаты 15. Итак, сколько дней второй даты включено в первый диапазон дат? Любые идеи, как это сделать с MySql?

+0

Выбрать даты (наименьшее (end1, end2), наибольшее (start1, start2)) – Strawberry

ответ

1

В MySQL вы можете использовать следующий SQL заявление, чтобы получить то, что вам нужно:

SELECT DATEDIFF(LEAST('2015-03-01 23:59:59','2015-01-15 23:59:59'),GREATEST('2015-01-01 00:00:00','2015-01-01 00:00:00'))+1 AS days; 
+------+ 
| days | 
+------+ 
| 15 | 
+------+ 

Это позволит получить разницу дат в днях с использованием DATEDIFF

+1

SELECT DATEDIFF ('2015-01-01 -2015-03', '2015-01-01 -2015-01-15 23: 59:59 ') AS days; да, но у меня есть два интервала что-то вроде этого –

+0

обновлено и протестировано –

0

Вы можете использовать CASE для условия, как показано ниже:

SELECT (CASE 
      WHEN '2015-01-01'>= '2015-01-01' AND '2015-04-15'<='2015-03-01' 
      THEN DATEDIFF('2015-01-15','2015-01-01')+1 
      ELSE 'out of range' 
     END) AS days; 

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

Смежные вопросы