2009-05-20 19 views
9

Supongamos que tenemos los siguientes registros en una tabla de SQL Server.Consulta de SQL Server Server - Contar el campo DateTime distinto

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

¿Cuál es la sintaxis SQL para obtener algo como esto?

FechaConde
19/5/2009
20/5/2009

+0

Qué servidor de base de datos está utilizando? – Andomar

+0

¿Qué RDBMS? La respuesta difiere para T-SQL, P/L SQL, etc. ... –

+0

Disculpe, lo solucionó en el título. MS-SQL. Gracias – OrElse

Respuesta

15

Es necesario hacer ninguna agrupación en una única versión de Fecha su campo de fecha, como este.

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

Normalmente hago esto, ya que evita la conversión a 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) 

EDIT: Otra forma de obtener sólo la parte de fecha de una fecha y hora

DATEADD(d, 0, DATEDIFF(d, 0, YourDateColumn)) 
+0

Mientras todavía se convierte en varchar, puede convertirlo a una fecha y hora (que le da 12:00 AM en esa fecha), o puede tomar los resultados de su fecha y convertirlos a una fecha y hora. –

2

Eso dependería de su motor de base de datos. Para SQL Server 2008 (y versiones futuras), puede usar el tipo date para hacer esto.

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

from table_name 

group by convert(date, date_column_name) 
1

Depende de su DBMS. Ejemplo para Mysql:

SELECT DATE_FORMAT(dateColumn, '%e/%c/%Y') as `date`, COUNT(*) 
FROM YourTable 
GROUP BY `date` 
+0

Esto solo agrupa por año. Quería la fecha completa –

+0

Gracias, lo arregló :) – soulmerge

0

¿En qué RDBMS estás? El uso de Sybase, la consulta se vería así:

select date(datetimeColumn) as myDate, count(*) as myTotal 
from thisTable 
Group by myDate 
Order by myTotal, myDate 
0

tras Google encontró éste también ...

SELECT CAST (PISO (CAST (Expr1 como float)) AS de fecha y hora) AS Expr1,

COUNT (*) AS Expr2

DE GRUPO MY_TABLE

POR

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

Las cons?

  1. de alta velocidad de ejecución
  2. Los resultados son devueltos en la localidad originales. Ex para el griego 19/5/2009

Gracias a todos

Cuestiones relacionadas