2016-04-29 22 views
5

Tabloda, zaman damgalarını artan sırada (en eskiden en yenisine) döndüren bir sorgu çalıştırıyorum. Bende ORDER BY timestamp numaralı hatta yazdım.SQL'de zaman damgaları arasındaki fark nasıl döndürülür?

Sonuçların, zaman damgalarının her biri arasındaki farkı içeren "Gün Alınan" adlı bir sütuna sahip olmam gerekiyor, örneğin (Zaman damgası 2 - Zaman damgası 1), (Zaman damgası 3 - Zaman damgası 2), (Zaman damgası 4 - Zaman damgası 3) ve bunun gibi. Bunu SQL kullanarak nasıl yapabilirim? Bir dize değil this benim için çalışmıyor neden olan bir int olarak tanımlanır çünkü

value timestamp    Days Taken 
2  2016-03-16 05:11:40 - 
3  2016-03-18 03:46:42 ? 
4  2016-03-18 04:09:44 ? 
5  2016-03-21 04:01:46 ? 
6  2016-03-22 04:38:17 ? 

Ben bir indeks olarak sütun value kullanamıyor değilim. Alınan Günler hesaplamak istediğim değerdir.

Eklendi: Vertica için DbVisualizer çalıştırıyorum, ON yan tümcesinde alt sorguları desteklemiyor gibi görünüyor. Bu doğrultuda

+0

kılavuzu Okuma size gösterilen olurdu [ 'DATEDIFF()'] (http://dev.mysql.com/doc/refman/5.7/en /date-and-time-functions.html#function_datediff) işlevi. – tadman

+0

Evet, daha açık olmalıydım. Bu işlevin farkındayım, ancak aynı sorguda birden çok satır arasında "DATEDIFF()" yi nasıl yapacağımı bilmiyorum. Kendine katıl? – geekchic

+0

Şemanınız neye benziyor? Sorunuzu düzenleyin ve eğer yapabiliyorsanız, daha net bir şekilde yapmak istediğinizi yapacağız. – tadman

cevap

3

deneyin şey:

select datediff(dd, a.timestamp, b.timestamp) 
    from #Table a 
    join #Table b on a.timeStamp = (select max(c.timeStamp) 
    from #Table c where c.timeStamp < b.timeStamp) 
+0

Garip bir şekilde DATEDIFF() için üç argüman var. – tadman

+0

Bunun sürümlerini denedim, ancak bu tuhaf yanılgıyı aldım, 'ON yan tümcelerinde alt sorgular desteklenmiyor'. – geekchic

+0

@tadman ve evet, bu izin verilir :) Bu, gün/hafta/saat/dakika ve benzeri arasındaki farkı döndürme işlevini anlatır. – geekchic