Совокупный подсчет данных даты из формата datetime - PullRequest
0 голосов
/ 30 мая 2020

У меня таблица выглядит так:

ID entry_time
abc123 2020-05-29 10:29:18.000
def456 2020-05-30 13:12:43.000
...

Я хочу провести кумулятивный подсчет по дате, поэтому я сделал:

select entry_time, count (*) OVER (ORDER BY entry_time) as TOTAL_NUM from my_table;

Это нормально , но он будет учитываться в формате datetime. Я хотел бы рассчитывать только на date (т.е. днем, не заботясь о времени).

Как мне это сделать?

Большое спасибо,

Ответы [ 3 ]

3 голосов
/ 30 мая 2020

Можно попробовать преобразовав entry time на сегодняшний день.

select 
    convert(date, entry_time) as entry_time, 
    count (*) OVER (ORDER BY convert(date, entry_time)) as total_num 
from my_table;
2 голосов
/ 30 мая 2020

Если вам нужна одна запись в день, вы можете использовать функции агрегирования и окна:

select
    date(entry_time) entry_day,
    sum(count(*)) over(order by date(entry_time)) total_num
from mytable
group by date(entry_time)
order by entry_day

Это предполагает, что ваша база данных поддерживает date(), который преобразует datetime в date (например, MySQL). Если это не так, у него есть альтернативный способ сделать это.

1 голос
/ 30 мая 2020

Вы можете использовать convert или преобразовать entry_time в Date

select entry_time, count (*) OVER (ORDER BY Convert(date,entry_time)) as TOTAL_NUM from my_table;

OR

select entry_time, count (*) OVER (ORDER BY Cast(entry_timeas as date)) as TOTAL_NUM from my_table;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...