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

Откуда:
Сообщений: 258
товарищи
обращаюсь к вам за помощью

задачка простая
есть интервал времени нижняя граница в часах и верхняя с 8 до 17

необходимо проверить входит ли getdate() в интервал с 8 до 17

каким образом можно сделать, понимаю что нужно разбить getdate() на чч и мм
потом сравнить в условии. но как на sql сделать не пойму. может есть , уже встроенный сервис какой?.

MS SQL 2005
24 мар 11, 15:44    [10419713]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
iljy
Member

Откуда:
Сообщений: 8711
glyzin,

dateadd(d,datediff(d,getdate(), 0), GETDATE()) between '8:00' and '17:00'
24 мар 11, 15:47    [10419740]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
glyzin
Member

Откуда:
Сообщений: 258
ага, вроде понятно, узнаем кол-во дней в дате, отнимаем от даты их, остается время
и его сравниваем. спасибо.
24 мар 11, 15:51    [10419772]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
Glory
Member

Откуда:
Сообщений: 104751
DATEPART(hour, GETDATE()) between 8 and 17
24 мар 11, 15:57    [10419818]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
-s-
Guest
glyzin,

DATEPART(HH, GETDATE()) between 8 and 17
24 мар 11, 16:02    [10419855]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Glory, -s-,

но ведь 08:00 бывает каждый день!
24 мар 11, 16:11    [10419896]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
iap
Glory, -s-,

но ведь 08:00 бывает каждый день!
Упс! Там же GETDATE() сравнивать хотят. Я глупость сморозил.
24 мар 11, 16:14    [10419918]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
iljy
Member

Откуда:
Сообщений: 8711
Glory, -s-,

тогда 17:45 например попадет, а это судя по всему не нужно.
24 мар 11, 16:29    [10420020]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
Glory
Member

Откуда:
Сообщений: 104751
iljy
Glory, -s-,

тогда 17:45 например попадет, а это судя по всему не нужно.

Ну поставьте 16 ))
24 мар 11, 16:39    [10420068]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
iljy
Member

Откуда:
Сообщений: 8711
Glory
iljy
Glory, -s-,

тогда 17:45 например попадет, а это судя по всему не нужно.

Ну поставьте 16 ))

Хехе, тогда не попадет 17:00
24 мар 11, 16:52    [10420132]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
17:00- это уже не рабочее время :)
24 мар 11, 16:55    [10420150]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
iljy
Member

Откуда:
Сообщений: 8711
igor2222
17:00- это уже не рабочее время :)

Ну это пусть ТС сам решает. Я исходил из того, что интервал проверяется замкнутый.
24 мар 11, 16:57    [10420163]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
glyzin
Member

Откуда:
Сообщений: 258
спасибо всем
25 мар 11, 07:49    [10422008]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
Титунин Петр
Member

Откуда:
Сообщений: 25
Ребята,
1) а есть более общее решение, когда я задуманную дату , например переведу в цифирьки 11122236215242,
а потом добавлю 3000 (что будут обозначать напр. + 10 сек) и отслеживать пока эта дата не наступит.
(help-ы достали, и книги странные в my sql или interbase - как то красиво было описано).

2) или мне нужно организовать задержку времени м/у командами программы
Применять комбинаторику с помощью dateadd(d,datediff(d,getdate(), 0), - это слишком, должны быть примитивные простейшие команды.
(help-ы сделаны так, чтобы скрыть эту информацию)
9 фев 12, 09:02    [12059271]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
Титунин Петр
Member

Откуда:
Сообщений: 25
Извиняюсь, DATEDIFF - стоящая команда
9 фев 12, 09:38    [12059401]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
Alex5555555555
Member

Откуда:
Сообщений: 114
у меня такая проблема
селект с заданной датой

and (DATE_OCCURED BETWEEN CONVERT(datetime, '14.06.2012 00:00:00', 104) AND CONVERT(datetime, '14.06.2012 23:59:59', 104))
мне нужно, что б селект доставал данные за прошлые сутки
сижу и поправляю руками
пробовал так
and (DATE_OCCURED BETWEEN CONVERT(datetime, getdate()-1, 104) AND CONVERT(datetime, getdate(), 104))

но данные отличаются, чем если за прошлые сутки тянуть
подскажи плиз в чём ошибка
14 июн 12, 20:37    [12716231]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
aleks2
Guest
... and cast(datediff(day, 0, getdate())-1 as datetime)<=DATE_OCCURED and DATE_OCCURED<cast(datediff(day, 0, getdate()) as datetime)
14 июн 12, 20:53    [12716266]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Off
автор
Я исходил из того, что интервал проверяется замкнутый
Этот подход чаще все приводит к ошибкам.
Время непрерывно. На непрерывных величинах выбирается интервалы, где точка с одной стороны "выколота".
Пишите всегда >= и < и никогда не ошибётесь. Эта привычка полезная, даже когда плохо понимаете .
Срач.
14 июн 12, 22:55    [12716644]     Ответить | Цитировать Сообщить модератору
 Re: интервал времени  [new]
Alex5555555555
Member

Откуда:
Сообщений: 114
aleks2,
спасибо друг, всё работает, буду разбираться
15 июн 12, 11:04    [12717972]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить