Sqlite3'e kaydedilen bilgiler arasından tarih aralığındaki veriler nasıl çekilir?

İyi günler.

Mesela diyelim ki Sqlite3 veritabanın’da şu veriler var:

islem tarih
Bu bir işlem 1 01.01.2022
Bu bir işlem 1 01.01.2022
Bu bir işlem 1 02.01.2022
Bu bir işlem 1 02.01.2022
Bu bir işlem 1 04.01.2022
Bu bir işlem 1 05.01.2022
Bu bir işlem 1 06.01.2022
Bu bir işlem 1 06.01.2022

Bunu veritabanı tablosu olarak düşünelim. Şimdi benim sorum, tarihlerin arasını çekmek ve bu aradaki verileri ayırt edip, kullanıcıya göstermek. Mesela kullanıcı:

Tarih 1: 02.01.2022
Tarih 2: 05.01.2022

Şeklinde giriş yaptığında, tabloda o tarihler arasındaki verileri görmesini istiyorum. Benim sorum ise: Bu girilen tarihler aralığındaki işlemleri nasıl çekeceğim? Bunu nasıl yapabilirim? Sadece tarihlerin aralığını iflemeyi anlatsanız yeter :pray: Şimdiden teşekkürler.

Bunu python’da yapmayı başarabilirseniz istediğinizi alabilirsiniz.

Veritabanı:

require "sqlite3"

SQLite3::Database.open("deneme.db") do |db|
	liste1 = db.execute('SELECT "users".* FROM "users" WHERE (date < "2026")')
	liste2 = db.execute('SELECT "users".* FROM "users" WHERE (date > "2022")')
	puts (liste1 & liste2).inspect
end

Sizin ilgilenmeniz kısımlar ise şunlar:

liste1 = db.execute('SELECT "users".* FROM "users" WHERE (date < "2026")')
liste2 = db.execute('SELECT "users".* FROM "users" WHERE (date > "2022")')
puts (liste1 & liste2).inspect

Burası
liste1 = db.execute('SELECT "users".* FROM "users" WHERE (date < "2026")')
veritabanı üzerindeki tarih kısmı 2026'dan küçük tarihleri bir listeye atıyor.

Burası
liste2 = db.execute('SELECT "users".* FROM "users" WHERE (date > "2022")')
ise veritabanı üzerindeki 2022'den büyük tarihleri alıyor.

Burası ise iki listenin kesişimlerini alıyor ve ekrana yazdırıyor:

puts (liste1 & liste2).inspect

Çıktı:

[["4", "sude", "2023"], ["5", "aziz", "2024"], ["6", "mehmet", "2025"]]

Umarım yardımcı olmuşumdur.

2 Beğeni

Çok teşekkür ederim.

1 Beğeni

Yardımcı olduysam ne mutlu bana :slight_smile:

1 Beğeni

Cift tirnak standart SQL’de identifier (sema, tablo, kolon, fonksiyon isimleri, vb.) belirtmek icin kullaniliyor. Burada “2026 adli kolon” manasina gelmesi lazim. String literalleri tek tirnakla veriliyor: '2026'

Burada calismasinin nedeni SQLite’in bulunmayan kolonlari string literallerine cevirmesi ve date kolonunun string’le karsilastirilmasina izin verilmesi olsa gerek.

2 Beğeni

Hocam konuyu hortlatıyorum kusura bakmayın. Ben bu tarihleri, gün/ay/yıl şeklinde yapacağım. Sizin verdiğiniz örnekte yıl şeklinde gözüküyor. Ben bunu gün/ay/yıl şeklinde nasıl yapabilirim?

Düzenleme: Buldum, teşekkürler.

2 Beğeni

sql_sorgusu

3 Beğeni