Запрос SQL Server Server - Подсчет отдельного поля DateTime - PullRequest
10 голосов
/ 20 мая 2009

Предположим, у нас есть следующие записи в таблице SQL Server.

Date
19/5/2009 12:00:00 pm
19/5/2009 12:15:22 pm
20/5/2009 11:38:00 am

Какой синтаксис SQL для получения чего-то подобного?

Дата Количество
19/5/2009 2
20/5/2009 1

Ответы [ 5 ]

15 голосов
/ 20 мая 2009

Вам необходимо выполнить любую группировку по версии вашего поля дат только для даты, например:

SELECT
    CONVERT(VARCHAR(10), YourDateColumn, 101),
    COUNT(*)
FROM
    YourTable
GROUP BY
    CONVERT(VARCHAR(10), YourDateColumn, 101)

Обычно я делаю это, поскольку это позволяет избежать преобразования в varchar.

SELECT
    DATEPART(yy, YourDateColumn),
    DATEPART(mm, YourDateColumn),
    DATEPART(dd, YourDateColumn),
    COUNT(*)
FROM
    YourTable
GROUP BY
    DATEPART(yy, YourDateColumn),
    DATEPART(mm, YourDateColumn),
    DATEPART(dd, YourDateColumn)

РЕДАКТИРОВАТЬ: еще один способ получить только часть даты datetime

DATEADD(d, 0, DATEDIFF(d, 0, YourDateColumn))
3 голосов
/ 20 мая 2009

Это будет зависеть от вашей базы данных. Для SQL Server 2008 (и будущих версий) вы можете использовать для этого тип date.

select
    convert(date, date_column_name) as Date,
    count(1) as Count

from table_name

group by convert(date, date_column_name)
1 голос
/ 20 мая 2009

Зависит от вашей СУБД . Пример для Mysql:

SELECT DATE_FORMAT(dateColumn, '%e/%c/%Y') as `date`, COUNT(*)
FROM YourTable
GROUP BY `date`
0 голосов
/ 21 мая 2009

После того, как Гугл тоже нашел это ...

ВЫБРАТЬ CAST (ЭТАЖ (CAST (Expr1 AS FLOAT)) КАК DATEtime) AS Expr1,

COUNT (*) AS Expr2

ОТ MY_TABLE

GROUP BY

CAST (FLOOR (CAST (Expr1 AS FLOAT)) КАК DATEtime)

Минусы?

  1. Высокая скорость исполнения
  2. Возвращенные результаты приведены в исходной локали. Ex для греческого 19/5/2009

Спасибо всем

0 голосов
/ 20 мая 2009

На каких РСУБД вы работаете? Используя Sybase, ваш запрос будет выглядеть так:

select date(datetimeColumn) as myDate, count(*) as myTotal
from thisTable
Group by myDate
Order by myTotal, myDate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...