GROUP BY Дата Тип данных DateTime - PullRequest
1 голос
/ 02 мая 2020

У меня есть такие данные:

    CHECKTIME       
02/03/2020 6:54:50  
02/03/2020 8:00:00  
02/03/2020 16:34:37 
03/03/2020 8:02:41  
03/03/2020 16:45:00 
03/03/2020 16:45:03 
04/03/2020 7:57:46  
04/03/2020 7:57:48  
04/03/2020 17:01:53 
04/03/2020 17:01:56 
05/03/2020 8:03:45  
05/03/2020 8:03:48  
05/03/2020 16:41:02 

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

    CHECKTIME       
02/03/2020 6:54:50
03/03/2020 8:02:41
04/03/2020 7:57:46
05/03/2020 8:03:45

Могу ли я достичь этого результата?

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

Ответы [ 2 ]

2 голосов
/ 02 мая 2020

Требуется минимум CHECKTIME для каждой из дат, которые вы можете получить с помощью функции DATEVALUE():

SELECT MIN(CHECKTIME) 
FROM tablename
GROUP BY DATEVALUE(CHECKTIME)

Другое решение с NOT EXISTS:

SELECT t.* 
FROM tablename AS t
WHERE NOT EXISTS (
  SELECT 1 FROM tablename
  WHERE DATEVALUE(CHECKTIME) = DATEVALUE(t.CHECKTIME) AND CHECKTIME < t.CHECKTIME
)
0 голосов
/ 02 мая 2020

Вы можете просто группировать по контрольному времени с приведенной датой

select CHECKTIME from table_name group by timestamp::date

этот синтаксис действителен в postgreSQL базе данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...