Obtenir la Date de regroupement dans sélectionnez une colonne DateTime de SQL Server
J'ai besoin de regrouper certains enregistrements en fonction d'une date, mais c'est un champ date et heure et j'ai besoin d'ignorer le temps est juste et groupe par la partie date - là est mon SQL tel qu'il est:
SELECT
AutoShipItems.CustomerID,AutoShipItems.NextOrderDate,
Customer.FirstName,Customer.LastName, Customer.EmailAddress
FROM
AutoShipItems
INNER JOIN Customer ON
AutoShipItems.CustomerID =Customer.CustomerID
WHERE
(AutoShipItems.NextOrderDate <= GETDATE())
GROUP BY
AutoShipItems.CustomerID, AutoShipItems.NextOrderDate,
Customer.FirstName, Customer.LastName,
Customer.EmailAddress
ORDER BY
AutoShipItems.NextOrderDate
Double Possible de Comment faire pour retourner la partie date seulement à partir d'un Serveur SQL de type de données datetime
OriginalL'auteur Slee | 2009-02-12
Vous devez vous connecter pour publier un commentaire.
Vous pouvez les regrouper par ceci:
J'ai mis cela en un scalaire fonction définie par l'utilisateur pour le rendre plus facile:
Qui vous serait alors de l'appeler comme ceci:
Note de ce que vous pourriez avoir à changer les valeurs dans la clause SELECT, puisque vous êtes regroupement par quelque chose de différent maintenant.
ce n'est pas définie comme un type dans ma version sur MS SQL Server 2005
La Date n'est pas un type connu dans SQL Server 2005, comme il a été souligné dans un peu d'autres réponses.
OriginalL'auteur casperOne
ou
la date est un type défini par l' - check it out
La DATE a été définie dans SQL2008, pas dans SQL2005 ou versions antérieures
Semble être le plus propre de la syntaxe jusqu'à présent, et est également idéal pour la vérification de la limite supérieure de la plage de date.
OriginalL'auteur mson
Quoi à ce sujet:
OriginalL'auteur Frederik Gheysels
Vous pouvez utiliser le type de date avec
convert
oucast
.ou
OriginalL'auteur Serj-Tm
Voir ce lien pour trois versions différentes d'une date seule fonction. Voici celui que j'ai fini par utiliser:
Parce que le format ISO 112 n'ont pas de signe de ponctuation, il est possible pour la conversion de type datetime de deviner le format de mal. Je souhaite qu'il y ait un format yyyy-mm-dd avec un rien de temps; ce serait ma préférence.
Pls attention, CONVERT(VARCHAR méthode de retrait le Temps est plusieurs fois plus lent que le CAST(ÉTAGE(FONTE ou DATEADD(DATEDIFF méthodes, Voir aussi: stackoverflow.com/questions/133081/... (que j'ai testé de la même façon trop)
En fait, tout essayé SELECT CAST(CONVERT(VARCHAR(10), GetDate(), 111) DATETIME) ici, et il donne une erreur avec mon serveur de configuration
OriginalL'auteur Mark Ransom
Vous pouvez aussi utiliser le bon vieux SQL fonction de conversion. Le dernier argument permet de fournir des pré-deifined les formats de date, certains retirez le temps. Voici la version révisée de la requête.
OriginalL'auteur James
Si il est juste question de regroupement, vous pouvez convertir le datetime expression de type int.
Simple
CAST(datetime AS int)
fait des tours de la date la plus proche de la date plutôt que des gouttes sur la partie temps. De là,D'une autre manière:
(Contrairement à datetimes, les flotteurs sont tronqués lors de cast en int.)
Je préfère l'ancien, comme il est plus court. Pas sûr de ce qui est mieux en termes de performances. Pourtant, la question peut sans doute ne se posent que sur de grands tableaux de données.
OriginalL'auteur