2010-12-27 16 views
7

Come posso ottenere il minuto totale per sql datetime?datetime to totalminute in sql

Diciamo:

select getdate() from table 

In questo modo, mi metterò tutto, ma voglio solo ottenere totale minuto. Ad esempio, se il tempo è 07:10:35, voglio 430.

Come raggiungerlo?

Il valore del campo è 01-01-2001 07:10:40 Il risultato che voglio è 430 ((7 * 60) +10) solo.

+3

tua domanda non è particolarmente chiaro. –

risposta

17

Ecco un esempio:

DECLARE @dt datetime 
SET @dt = '01-01-2001 07:10:20' 
SELECT DATEDIFF(MINUTE, DATEADD(DAY, DATEDIFF(DAY, 0, @dt), 0), @dt) 
+0

restituisce questo errore (Impossibile assegnare un valore predefinito a una variabile locale). – william

+0

Oh, mi dispiace; Ho perso il fatto che stavi su SQL Server 2005. Lo correggerò. –

+0

Purrrrrrrrrrrfect – Mukus

1

Questa query restituirà il numero di minuti oltre la mezzanotte.

declare @now datetime = getdate() 
declare @midnight datetime = CAST(FLOOR(CAST(@now AS FLOAT)) AS DATETIME) 
select datediff(mi, @midnight,@now) 

Il codice

CAST(FLOOR(CAST("yourDateTimeHere" AS FLOAT)) AS DATETIME) 

converte qualsiasi datetime a mezzanotte. Utilizzare il datediff con la funzione "mi" per ottenere il numero di minuti oltre la mezzanotte.

Utilizzare libri online per più data e l'ora di matematica

+0

Il termine "mezzanotte" potrebbe essere fuorviante qui, poiché si potrebbe pensare che significhi "23: 59: 59", ma invece è "00: 00: 00". es. Se vuoi eseguire dei calcoli basati sulla 'mezzanotte' del '31 dicembre 2016', probabilmente ti aspetteresti 'Dec 31 11: 59: 59', o ​​forse 'Jan 01 2017 00: 00: 00', ma probabilmente no "Dic 31 00: 00: 00', che è quello che il tuo codice sopra ti avrebbe dato. – JoeBrockhaus

+0

Penso che il termine "mezzanotte" in termini di codifica e tempo di 24 ore/militare sia abbastanza chiaro. 00:00:00 è sempre l'inizio di un nuovo giorno, quindi se dovessi dire "Mezzanotte del 31 dicembre 2016" dovrebbe SEMPRE indicare 2016/12/31 00: 00: 00.Anche con un orologio di 12 ore e AM/I designatori PM, 12:00:00 è mezzanotte, ed è designato come mattino dall'AM, è solo che inizia a 12 che è fuorviante. –