web-dev-qa-db-fra.com

Comment puis-je regrouper par colonne date / heure sans prendre en compte le temps

J'ai plusieurs commandes de produits et j'essaie de regrouper par date et de faire la somme des quantités pour cette date. Comment puis-je grouper par mois/jour/année sans prendre en compte la partie heure?

3/8/2010 7:42:00 devrait être groupé avec 3/8/2010 4:15:00

188
The Muffin Man

Cast/Convert les valeurs à un Date tapez pour votre groupe par.

GROUP BY CAST(myDateTime AS DATE)
327
Oded
GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0)

Ou dans SQL Server 2008, vous pouvez simplement transtyper en Date comme suggéré par @Oded:

GROUP BY CAST(orderDate AS DATE)
24
Mitch Wheat

En pré SQL 2008 En retirant la partie date:

GROUP BY CONVERT(CHAR(8),DateTimeColumn,10)
16
Kamyar

GROUP BY DATE(date_time_column)

5
Aravindh Gopi

Voici un exemple que j'ai utilisé lorsque j'avais besoin de compter le nombre d'enregistrements pour une date donnée sans la partie heure:

select count(convert(CHAR(10), dtcreatedate, 103) ),convert(char(10), dtcreatedate, 103)
FROM dbo.tbltobecounted
GROUP BY CONVERT(CHAR(10),dtcreatedate,103)
ORDER BY CONVERT(CHAR(10),dtcreatedate,103)
2
user3169774

Voici l'exemple qui fonctionne très bien dans Oracle

select to_char(columnname, 'DD/MON/yyyy'), count(*) from table_name group by to_char(createddate, 'DD/MON/yyyy');
0
Radhakrishnan