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 Şimdiden teşekkürler.
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:
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.
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?