Записки прогера
Facebook Twitter Subscribe

Для того, чтобы сделать проверку на пересечения периодов (например, чтобы не сохранять в базе данные с пересекающимися периодами дат) в SQL запросе, достаточно:

1
2
3
4
5
6
7
Select
    COUNT(*) as [count]
from Table
where
    [table_date_begin] <= :date_end and
    [table_date_end] >= :date_begin and
    [id] != :id
Select
	COUNT(*) as [count]
from Table
where
	[table_date_begin] <= :date_end and
	[table_date_end] >= :date_begin and
	[id] != :id

где [count] – количество пересечений, за исключением ([id] != :id) сохраняемой записи таблицы.

Добавлено:

А если дата окончания периода не обязательна (может быть не указана), то проверка должна выглядеть так:

1
2
3
4
5
6
7
Select
    COUNT(*) as [count]
from Table
where
    ([table_date_begin] <= :date_end or :date_end is null) and
    ([table_date_end] >= :date_begin or [table_date_end] is null) and
    [id] != :id
Select
	COUNT(*) as [count]
from Table
where
	([table_date_begin] <= :date_end or :date_end is null) and
	([table_date_end] >= :date_begin or [table_date_end] is null) and
	[id] != :id

то есть добавляем условия на незаполненность даты окончания периода.

17.08.2011 09:39

Здравствуйте.

Первый пост как тест. Ну и рыба, соответственно. К примеру:

Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.

А еще:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

И еще:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Пример PHP-кода без открывающих тегов
class MyClass {
  const constant = 'значение константы';
 
  function showConstant() {
    echo  self::constant . "\n";
  }
}
 
echo MyClass::constant . "\n";
 
$class = new MyClass();
$class->showConstant();
/* echo $class::constant; -  такое использование недопустимо */
// Пример PHP-кода без открывающих тегов
class MyClass {
  const constant = 'значение константы';

  function showConstant() {
    echo  self::constant . "\n";
  }
}

echo MyClass::constant . "\n";

$class = new MyClass();
$class->showConstant();
/* echo $class::constant; -  такое использование недопустимо */
23.06.2011 16:52
 
Все права защищены © 2011 Записки прогера. интернет-версия №4