T-SQL ниже будет делать то, что вы хотите в SQL Server.Тем не менее, производительность не будет высокой на большом количестве строк, так как индекс не может быть использован из-за функций, обертывающих столбец dt.Из соображений производительности вы можете рассмотреть возможность добавления в таблицу нового вычисляемого столбца для хранения даты со смещением времени (-6 часов).Затем этот новый столбец можно проиндексировать, и производительность должна быть в порядке.
, если существует (выберите * из sys.objects, ГДЕ object_id = object_id (N'dbo.t ') И введите (N'U'))удалить таблицу dbo.t
создать таблицу dbo.t (дата и время не равны нулю)
вставить в значения dbo.t ('20100819 05:00')вставить в значения dbo.t ('20100819 07:00')вставить в значения dbo.t ('20100819 23:00')вставить в значения dbo.t ('20100820 04:00')вставить в значения dbo.t ('20100820 11:00')вставить в значения dbo.t ('20100820 13:00')вставить в значения dbo.t ('20100821 00:45')
выберите конвертировать (дата, дата и время (ЧЧ, -6, дт)) как [Дата],COUNT (dt) как [Количество]с dbo.tсгруппировать по конвертировать (дата, датадд (чч, -6, дт))