prasanna204 Ответов: 2

Получить количество записей между двумя датами I


Привет Эксперты,

У меня есть таблица listofholidays
С колоннами
RowId holidayname fromdate и todate

Если работник подает заявление на отпуск с даты-до даты.В этом диапазоне если любому празднику вернуться, что рассчитывать исходя из условий fromdate=на сегодняшний день и fromdate != на сегодняшний день

Как я могу добиться результата??

Что я уже пробовал:

Я написал два запроса
Выберите count (*) как count1 из списка праздников, где fromdate между @fromdate и @todate

Выбрать количество(*) как количество2: от listofholidays где современные
Между @fromdate и @todate

Я суммирую эти два счета, но в таблице fromdate и todate равны
Это дает двойной счет

OriginalGriff

Это не имеет большого смысла - возможно, если вы добавите пример ввода и вывода, чтобы мы могли видеть, что вы получаете, и то, что вы ожидаете, может быть более ясным?

Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

prasanna204

Конечно
Табличные данные:
1 Тест 30-05-2017 30-05-2017
2 тест1 31-05-2017 31-05-2017

Сотрудник подал заявление на отпуск с 26-05-2017 по 31-05-2017
О/р
Результат подсчета 2 fromdate = to date
Итак, если две даты или не равны, как применять условия ?

2 Ответов

Рейтинг:
2

Peter Leow

0. Эти даты, по-видимому, имеют тип varchar, если это так, вы должны изменить их на тип даты.
1. глядя на ваш пример, кажется, что каждый праздник длится только один день, если так, то зачем нужны две даты - от даты и до даты? В таком случае вам нужно только поле даты, скажем date_of_holiday, а затем получить количество записей, которые (date_of_holiday между fromdate и todate) и вы закончили.
2. Если есть праздники, которые охватывают более одного дня, то рассмотрите следующие сценарии:
2.1 (holiday_from_date между leave_start_date и leave_end_date) и (holiday_to_date > leave_end_date) или
2.2 (holiday_to_date между leave_start_date и leave_end_date) и (holiday_from_date < leave_start_date) или
2.3 (holiday_from_date между leave_start_date и leave_end_date) и (holiday_to_date между leave_start_date и leave_end_date)


Рейтинг:
2

Richard Deeming

Вы ищете количество праздников, которые перекрытие предполагаемый отпуск?

SELECT
    COUNT(*) As OverlappingCount
FROM
    ListOfHolidays
WHERE
    FromDate <= @ToDate
And
    ToDate >= @FromDate
;