Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2011, 16:49   #1
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию DATEDIFF

всем привет скажите как при использовании функции DATEDIFF не учитывать к примеру один час(с 8 до 9) вывести к примеру сколько работал сотрудник не учитывая обедненный перерыв
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 26.08.2011, 18:14   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) Какая у Вас СУБД ?

2) очень-очень боюсь, что в функции DATEDIFF нельзя не учитывать один час..

3) для решения задачи нужно писать свою функцию (и я бы не сказал, что она будет очень простой и элементарной!)
Там нужно разбирать промежуток времени на такой, в который заданный час исключения входит ПОЛНОСТЬЮ и и такие, которые пересекаются с часом исключения (ну, например, время начала периода 8:45 минут... или время окончания: 8:30)
для тех промежутков времени, которые захватывают час полностью высчитывать количество дней (фактически, это даст количество часов, которые нужно отнять от финального времени)...

это только один из возможных вариантов решения данной проблемы. На самой деле их (вариантов решения) может быть множество!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.08.2011, 18:33   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Полностью согласен с Serge_Bliznykov. Если данные передатся в программу, то гораздо проще потянуть в неё время начала и время конца, сделать вычисляемое поле в DataSet и с минимальными трудозатратами рассчитать, что займет несколько строк кода.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.08.2011, 21:38   #4
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

а если не использовать DATEDIFF, другим способом можно?
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 26.08.2011, 22:37   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Имя СУБД вашей очень секретно наверно? А все другие способы все равно сведутся к тому, что в посте 3 указаны - работа с функциями даты-времени, которые, кстати, в различных СУБД в общем случае имеют разный формат
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.08.2011, 11:08   #6
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

MS SQL SERVER
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 30.08.2011, 08:43   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Claster,
решили ли Вы свою проблему ?

Если нет - Вас функция на сервере устроит?
(почему спрашиваю - заморачиваться с её написанием или нет...)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функции convert, datediff Veroonya БД в Delphi 8 09.02.2009 11:13