Ana içeriğe geç

SQLite'ta Tarih Fonksiyonlarını Hacklemek

Bu eğitimde, SQLite'ta tarih fonksiyonlarını nasıl kullanacağınızı öğrenin.
· 3 dk. oku

Yapay Zeka ile Keşfedin

SQL'in Postgres uygulamalarındaki (Amazon Redshift gibi) en kullanışlı fonksiyonlarından bazıları DATE_DIFF ve DATE_TRUNC'tur:

  • DATE_DIFF, iki farklı tarih arasında geçen süreyi verir. Örneğin, aşağıdaki kod date1 ile date2 arasındaki gün sayısını verir:
DATE_DIFF('day', date1, date2)

DATE_DIFF, kayıttan iptale kadar geçen gün sayısını veya oturum açmadan oturum kapatmaya kadar geçen saat sayısını hesaplamak için harikadır.

  • DATE_TRUNC, bir tarihi en yakın gün, hafta, ay veya yıla kırpar. Örneğin, aşağıdaki kod my_timestamp zaman damgası için en yakın Pazartesi gününü verir:
DATE_TRUNC('week', my_timestamp)

DATE_TRUNC, verileri toplamak için mükemmeldir. Örneğin, en yakın ay başlangıç tarihine kırparak Aylık Aktif Kullanıcı (MAU) sayısını bulmak için kullanabiliriz.

Ancak her SQL uygulamasında bu harika fonksiyonlar yoktur. Sıfırdan SQL Öğrenin kodumuz için, tek bir Docker örneğinde çalıştırılabilen hafif bir SQL uygulaması olan SQLite kullanıyoruz. SQLite, web sitesi arka uçları ve küçük projeler için harikadır, ancak benim en sevdiğim iki fonksiyon eksik. Neyse ki, çözümler var.

DATE_DIFF'i taklit etmek için, juliandate adlı az bilinen bir fonksiyonu kullanabiliriz. Vikipedi'ye göre, “Julian Gün Numarası (JDN), Julian gün sayımında öğle Evrensel Zamanından başlayarak, 0 Julian gün numarası MÖ 4713 Pazartesi günü öğlen başlayan güne atanmak üzere, tam bir güne atanan tam sayıdır." Bir tarihi kayan noktalı bir sayıya dönüştürerek, iki zaman damgası arasındaki farkı bulmak için çıkarma yapabiliriz.

julian day number

Cevabımızı 24 ile çarparak saatlere veya 24 * 60 ile çarparak dakikalara bile dönüştürebiliriz.

DATE_TRUNC'un bazı işlevlerini strftime kullanarak taklit edebiliriz. Bu fonksiyon bir zaman damgasını verilen bir çıktıyla bir dizeye dönüştürür.

%d ayın günü: 00 %f kesirli saniyeler: SS.SSS %H saat: 00-24 %j yılın günü: 001-366 %J Julian gün numarası %m ay: 01-12 %M dakika: 00-59 %s 1970-01-01'den beri geçen saniyeler %S saniye: 00-59 %w haftanın günü 0-6, Pazar==0 %W yılın haftası: 00-53 %Y yıl: 0000-9999

Normalde bunu, YYYY-MM-DD gibi farklı zaman damgası biçimleri arasında MM-DD-YYYY'ye dönüştürmek için kullanabiliriz:

strftime('%M-%D-%Y', mydate)

Ancak biçimlendirmemizi uygun noktaya kırpacak şekilde akıllıca seçebiliriz. Örneğin, en yakın aya kırpmak istiyorsak şunu yapabiliriz:

strftime('%M/%Y', mydate)

Veya en yakın haftaya kırpmak için şunu kullanabiliriz:

strftime('%Y-%w', mydate)

Bu iki basit numarayla, Amazon Redshift'tekiyle aynı harika analizlerin bazılarını SQLite ile de yapabilirsiniz!

SQL'in temelleri hakkında daha fazla bilgi edinmek isterseniz, DataCamp'in Veri Bilimi için SQL'e Giriş kursunu alın ve Yeni Başlayanlar için SQL Eğitimimize göz atın.

Konular

İlgili