SQL - получить строки с одинаковой датой, датой, временем и минутами - PullRequest
0 голосов
/ 16 мая 2019

У меня есть таблица с данными вроде:

   id  question_id Created_dt           secondary_question_id
  --------------------------------------------------------
   1     71        2016-03-12 16:33:00        123
   2     71        2016-03-12 16:33:09        124
   3     71        2016-03-12 16:33:12        125
   4     72        2018-05-15 16:39:00        156
   5     72        2018-05-15 16:39:41        135
   6     73        2018-05-15 16:39:00        129

Теперь я хотел бы получить все записи с одинаковым созданным_детом до минут. Я попробовал ниже, но не получил подходящих результатов.

  SELECT question_id, COUNT(Created_dt)
  FROM  TABLE
  GROUP BY Created_dt, question_id
  ORDER BY Created_dt

1 Ответ

0 голосов
/ 16 мая 2019

Если я понимаю, что вы спрашиваете, вы хотите игнорировать секунды для этого запроса. Таким образом, преобразование в varchar и усечение секунд, а затем обратное преобразование в datetime выполнят это. Возможно, не с лучшей производительностью, если производительность была проблемой, которую вы хотели бы рассмотреть для правильного хранения datetime без секунд.

declare @Table table (id int, question_id int, created_dt datetime, secondary_question_id int)

insert into @Table (id, question_id, created_dt, secondary_question_id)
  select 1, 71, '2016-03-12 16:33:00', 123
  union all
  select 2, 71, '2016-03-12 16:33:09', 124
  union all
  select 3, 71, '2016-03-12 16:33:12', 125
  union all
  select 4, 72, '2018-05-15 16:39:00', 156
  union all
  select 5, 72, '2018-05-15 16:39:41', 135
  union all
  select 6, 73, '2018-05-15 16:39:00', 129

--select *, convert(datetime,convert(varchar(17),created_dt,113))
--from @Table

SELECT question_id, COUNT(*)
FROM (
  select question_id, convert(datetime,convert(varchar(17),created_dt,113)) created_dt_new
  from @TABLE
) X
GROUP BY created_dt_new, question_id
ORDER BY created_dt_new
...