Ho una tabella con data e ora, e voglio dividere questo tavolo in intervalli di un'ora, iniziando ora e andando indietro di un paio d'ore. Non riesco a ottenere i risultati che mi servono con la funzione T-SQL DATEDIFF, poiché conta il numero di volte in cui la lancetta dei minuti passa 12 tra le due date: voglio il numero di volte in cui la lancetta dei minuti passa dove è ora tra il timestamp e ora.DateDiff T-SQL - partizione di "ore complete fa", piuttosto che "minuti in minuti 00 da"
C'è un modo semplice per farlo in T-SQL?
Aggiornamento: In risposta ai commenti, ecco alcuni dati di esempio, la query Attualmente sto usando ed i risultati che sto ottenendo, così come i risultati che voglio.
dati del campione:
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
interrogazione attuale:
SELECT TimeStamp, DATEDIFF(HOUR, TimeStamp, CURRENT_TIMESTAMP) AS Diff FROM ...
Risultati:
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
Cosa avrei preferito:
-- 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
Ho contrassegnato i risultati modificati con +1
. Inoltre, non mi importa se questo è 0-indicizzato o 1-indicizzato, ma in fondo, se è ora 13:40 Voglio che i periodi di tempo che ottengono lo stesso valore di essere
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)
si può spiegare che con i dati di input e output previsto con il domanda, hai scritto? – shahkalpesh
DATEDIFF in pochi minuti quindi divisione intera per 60? –