2016-11-01 5 views
0

Ich habe eine Frage zu einem SQL. Ich habe den TischErhalten Sie den Unterschied in Stunden mit einem SQL

date      id    
2015-03-17 00:06:12   143 
2015-03-17 02:06:12   143 
2015-03-17 09:06:12   143 
2015-03-17 10:10:10   200 

Für jeden id ich mit SQL, um die Differenz in Stunden (letztes Datum - erstes Datum) erhalten möge. Zum Beispiel: Benutzer mit ID = 143 Ich brauche: 9 Stunden den Unterschied. Für den Benutzer 200 kein Unterschied, da er nur ein Datum hat. Ich habe keine Ahnung, wie ich das machen soll. Kannst du mir bitte helfen ? Thx im Voraus und sorry für mein Englisch

+0

Stehen Sie mit 'MySQL' oder 'SQL Server'? Sie sind nicht dasselbe. – Siyual

+0

Es gibt keinen SQL92 db-Datumsvergleichsstandard als solchen - jeder Anbieter bietet seine eigenen Funktionen. – donlys

+0

Für Benutzer 143 ist es nicht 9 Stunden? –

Antwort

0

mysql:

select A1.id, 
     datefiff(A1.xDate,A1.nDate)*24 + timediff(A1.xDate,A1.nDate) as HourDiff 
from 
(
select id, max(Date) as xDate, min(Date) as nDate 
from myTable 
group by id 
) A1 

SQL Server:

with A1 as 
(
    select id, max(Date) as xDate, min(Date) as nDate 
    from myTable 
    group by id 
) 

select id, datediff(HH, xDate, nDate) as HourDiff 
from A1 
+0

nicht datediff Methode arbeiten –

0

die Sie interessieren in SQL Server:

declare @table table ([date] datetime,id int) 
    insert into @table values ('2015-03-17 00:06:12', 143), 
    ('2015-03-17 02:06:12', 143), 
    ('2015-03-17 09:06:12', 143), 
    ('2015-03-17 10:10:10', 200) 

     select max(Date) as maxDate, min(Date) as minDate, id into #temp 
     from @table 
     group by id 


    select id, Cast((maxDate - minDate) as Float) * 24.0 as [difference] 
    from #temp 
    --OR 
    --select id, DATEDIFF(second, minDate, maxDate)/3600.0 as [difference] 
    --from #temp 

    drop table #temp 
Verwandte Themen