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

Откуда:
Сообщений: 3
Прошу помощи знатоков!!! В базе есть поле DAT_PR где есть дата+время.
Задача: отобрать все записи, у которых время заканчивается на 30 минут 00 сек или 00 минут 00 сек.

Я работаю с базой Oracle там я делал так: where to_number(to_char(v.DAT_PR,'miss'))='3000'.
Можно ли сделать это же в SQL 2005
18 дек 09, 12:35    [8085964]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать все даты(время) которых закачиваются на 00 или 30 минут  [new]
Le Peace
Member

Откуда: Москва
Сообщений: 8969
datepart
18 дек 09, 12:37    [8085974]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать все даты(время) которых закачиваются на 00 или 30 минут  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
WHERE CONVERT(CHAR(23), v.DAT_PR,126) LIKE '%[03]0.000'
??
18 дек 09, 12:40    [8085986]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать все даты(время) которых закачиваются на 00 или 30 минут  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
ruslan_asu
Я работаю с базой Oracle там я делал так: where to_number(to_char(v.DAT_PR,'miss'))='3000'
А зачем to_number ?
18 дек 09, 12:41    [8085994]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать все даты(время) которых закачиваются на 00 или 30 минут  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iap
WHERE CONVERT(CHAR(23), v.DAT_PR,126) LIKE '%[03]0.000'
??
Или
WHERE CONVERT(CHAR(12), v.DAT_PR,14) LIKE '%[03]0.000'
Другой формат подобрать можно
18 дек 09, 12:44    [8086023]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать все даты(время) которых закачиваются на 00 или 30 минут  [new]
ruslan_asu
Member

Откуда:
Сообщений: 3
Спасибо коллеги! Буду пробовать.

>> Паганель А зачем to_number ?

Так мне было легче работать с логикой Больше, Меньше. Хотя верно, для моего примера можно без to_number.
18 дек 09, 12:47    [8086044]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать все даты(время) которых закачиваются на 00 или 30 минут  [new]
ruslan_asu
Member

Откуда:
Сообщений: 3
Пришел к такому (может кому пригодиться) :)

Where CONVERT(CHAR(12), MeteringTIME,14) LIKE '%30:00:00%'
or
CONVERT(CHAR(12), MeteringTIME,14) LIKE '%00:00:00%'
18 дек 09, 15:00    [8087274]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать все даты(время) которых закачиваются на 00 или 30 минут  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
ruslan_asu
Пришел к такому (может кому пригодиться) :)

Where CONVERT(CHAR(12), MeteringTIME,14) LIKE '%30:00:00%'
or
CONVERT(CHAR(12), MeteringTIME,14) LIKE '%00:00:00%'
А миллисекунды любые годятся?
Чегоо же сразу не сказали?
Речь шла о тридцати минутах, а проверяете 30 часов? В сутках, вообще-то, не больше 24 часов...
Зачем OR, если можно просто
LIKE '%[03]0:00.%'
???
18 дек 09, 15:07    [8087351]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать все даты(время) которых закачиваются на 00 или 30 минут  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iap
LIKE '%[03]0:00.%'
Ещё проще
CONVERT(CHAR(8), MeteringTIME,8) LIKE '%[03]0:00.%'
18 дек 09, 15:12    [8087402]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать все даты(время) которых закачиваются на 00 или 30 минут  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Ошибся
iap
Ещё проще
CONVERT(CHAR(8), MeteringTIME,8) LIKE '%[03]0:00.%'
CONVERT(CHAR(8), MeteringTIME,8) LIKE '%[03]0:00'
18 дек 09, 15:14    [8087422]     Ответить | Цитировать Сообщить модератору
 Re: Как отобрать все даты(время) которых закачиваются на 00 или 30 минут  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Можно, наверно, и так:
WHERE DATEDIFF(SECOND, STR(YEAR(MeteringTIME)),MeteringTIME)%1800=0
18 дек 09, 15:22    [8087493]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить