J'ai une table avec des horodatages, et je veux partitionner cette table en intervalles d'une heure, en commençant et en cours en arrière quelques heures. Je n'arrive pas à obtenir les résultats dont j'ai besoin avec la fonction T-SQL DATEDIFF, puisqu'elle compte le nombre de fois que l'aiguille des minutes passe 12 entre les deux dates - Je veux le nombre de fois où la main des minutes passe où elle est maintenant entre l'horodatage et maintenant.T-SQL DateDiff - partition par "full hours ago", plutôt que "times minutes turned 00 depuis"
Existe-t-il un moyen simple de faire cela dans T-SQL?
Mise à jour: En réponse aux commentaires, voici quelques exemples de données, la requête que je utilise actuellement et les résultats que je reçois, ainsi que les résultats que je veux.
données de l'échantillon:
TimeStamp
*********
2010-07-20 11:00:00.000
2010-07-20 10:44:00.000
2010-07-20 10:14:00.000
2010-07-20 11:00:00.000
2010-07-20 11:40:00.000
2010-07-20 10:16:00.000
2010-07-20 13:00:00.000
2010-07-20 12:58:00.000
requête actuelle:
SELECT TimeStamp, DATEDIFF(HOUR, TimeStamp, CURRENT_TIMESTAMP) AS Diff FROM ...
Résultats:
TimeStamp Diff ********* **** 2010-07-20 11:00:00.000 2 2010-07-20 10:44:00.000 3 2010-07-20 10:14:00.000 3 2010-07-20 11:00:00.000 2 2010-07-20 11:40:00.000 2 2010-07-20 10:16:00.000 3 2010-07-20 13:00:00.000 0 2010-07-20 12:58:00.000 1
Ce que je préfère avoir:
-- The time is now, for the sake of the example, 13:40 TimeStamp Diff ********* **** 2010-07-20 11:00:00.000 3 -- +1 2010-07-20 10:44:00.000 3 2010-07-20 10:14:00.000 4 -- +1 2010-07-20 11:00:00.000 3 -- +1 2010-07-20 11:40:00.000 2 or 3 -- edge case, I don't really care which 2010-07-20 10:16:00.000 4 -- +1 2010-07-20 13:00:00.000 1 -- +1 2010-07-20 12:58:00.000 1
J'ai marqué les résultats qui ont changé avec un +1
. De plus, je ne me soucie pas vraiment si cela est 0-indexé ou 1-indexé, mais au fond, si elle est maintenant 13:40 Je veux que les intervalles de temps qui obtiennent la même valeur pour être
12:40-13:40 1 (or 0) 11:40-12:40 2 (or 1) 10:40-11:40 3 (or 2) 09:40-10:40 4 (or 3)
Pouvez-vous expliquer que les données d'entrée et de sortie prévue avec le requête, vous avez écrit? – shahkalpesh
DATEDIFF en minutes puis division entière par 60? –