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

Откуда:
Сообщений: 15
Не получается сделать следующее.
SELECT COUNT(*) FROM devices WHERE status = @status AND complete = @complete AND started = ...

Нужно получить записи, где время кратно текущим часам, т.е. если время записи started = "2014-08-14 13:32:00.000", то оно кратно "2014-08-14 16:32:00.000" и т.д.
24 окт 14, 16:11    [16754871]     Ответить | Цитировать Сообщить модератору
 Re: Получить записи, где время в минутах тоже самое  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20580
http://msdn.microsoft.com/en-us/library/aa258265(v=sql.80).aspx
24 окт 14, 16:14    [16754896]     Ответить | Цитировать Сообщить модератору
 Re: Получить записи, где время в минутах тоже самое  [new]
кириллk
Member

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

SELECT COUNT(*) FROM devices WHERE status = @status AND complete = @complete AND started =getdate()
24 окт 14, 16:39    [16755081]     Ответить | Цитировать Сообщить модератору
 Re: Получить записи, где время в минутах тоже самое  [new]
bestden
Member

Откуда:
Сообщений: 15
кириллk,

совсем не то)
24 окт 14, 16:44    [16755126]     Ответить | Цитировать Сообщить модератору
 Re: Получить записи, где время в минутах тоже самое  [new]
bestden
Member

Откуда:
Сообщений: 15
Моя версия
SELECT devices.line_number, devices.modbus_number FROM devices WHERE status = @status AND complete = @complete AND DATEPART(minute, started) = @started

где
cmd.Parameters.AddWithValue("@started", dt.Minute);
24 окт 14, 16:46    [16755138]     Ответить | Цитировать Сообщить модератору
 Re: Получить записи, где время в минутах тоже самое  [new]
Wlr-l
Member

Откуда:
Сообщений: 522
bestden, может так?

declare @DTstart datetime = '2014-08-14 13:32:00';
;
with sd as (--исходные данные
     select *
       from (values ('2014-08-14 13:32:00'),
                    ('2014-08-14 13:33:00'),
                    ('2014-08-14 14:32:00'),
                    ('2014-08-14 13:34:00')) as T(dt)
)

select  dt
  from sd 
  where datediff(hh,@DTstart,dt) in (0,1,2,3,4,5/*, ..., 24*/) and datediff(mi,@DTstart,dt)%60=0


Результат:
2014-08-14 13:32:00
2014-08-14 14:32:00
24 окт 14, 16:53    [16755202]     Ответить | Цитировать Сообщить модератору
 Re: Получить записи, где время в минутах тоже самое  [new]
Wlr-l
Member

Откуда:
Сообщений: 522
Если есть таблица целых чисел, то можно и так:

declare @DTstart datetime = '2014-08-14 13:32:00';
;
with sd as (--исходные данные
     select *
       from (values ('2014-08-14 13:32:00'),
                    ('2014-08-14 13:33:00'),
                    ('2014-08-14 14:32:00'),
                    ('2014-08-14 13:34:00')) as T(dt)
)
, num as (--просто таблица чисел
     select *
       from (values (0), (1), (2), (3), (4), (5), (6), (7), (8), (9)/*, ..., 24*/) as T(n)
)

select  dt
  from sd  a
  join num b on datediff(hh,@DTstart,dt)=n and datediff(mi,@DTstart,dt)%60=0
24 окт 14, 17:00    [16755245]     Ответить | Цитировать Сообщить модератору
 Re: Получить записи, где время в минутах тоже самое  [new]
Wlr-l
Member

Откуда:
Сообщений: 522
Wlr-l,

datediff(hh,@DTstart,dt) in (0,1,2,3,4,5/*, ..., 24*/) = datediff(hh,@DTstart,dt) between 0 and 24
24 окт 14, 17:24    [16755374]     Ответить | Цитировать Сообщить модератору
 Re: Получить записи, где время в минутах тоже самое  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Можно вот так кусок или куски даты поизвлекать

SUBSTRING(CONVERT (CHAR(20), dt, 121), 15, 2),
24 окт 14, 19:06    [16755912]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить