2016-03-23 39 views
0

.csv dosyalarını bir SQLite veritabanına aktarıyorum. Tablolardan birine karşı sorgulamaya çalışıyorum. Ben MM/GG/YYYY biçiminde olan tarihte asılı olduğunu düşünüyorum. Tüm aylar ve günler iki basamak değil. Ben de denedimTarih sütunını sqlite olarak dönüştürme, sorgulayamazsınız

SELECT * FROM <table> 
WHERE 'account' = <account_number> 
and 'date' between '1900-01-01' and '2013-03-03' 

: O çalışmıyor

select * from <table> 
where 'account' = <account_number> 
and 'date' > '1901-01-01' and 'date' < '2013-03-03' 

ben bu sorguyu denedim.

+0

* Bence tarihlere asılıyor * ve * işe yaramıyor *: Bunlar çok belirsiz açıklamalar. Lütfen olabildiğince spesifik olun (hata mesajı, hangi sorgu, sorgulama kayıtlarının sınırlandırılması için sorgulanan kayıtları sınırlamaya çalıştınız ... vb.). – trincot

+0

@ Hiçbir şey iade edilmiyor. Kayıtları döndürmeli, ancak * AA/GG/YYYY * biçimindeki tarihleri ​​sorguladığımda hiçbir şey döndürmez. Tarih sütunlarını kaldırırsam veri döndürür. Hata mesajı yok. – nobrandheroes

+0

Tarih sütununun veri türü nedir? CREATE TABLE ifadesini ona verebilir misiniz? – trincot

cevap

0

Sütun adları tek tırnak içine alınmamalıdır.

select * 
from  mytable 
where account = <account_number> 
and  date between '1901-01-01' and '2013-03-02' 

Not between'un kullanımı da unutmayın.

Tarih formatı hakkında: tabiki doğru YYYY-AA-GG biçiminde kayıt eklediğinizden emin olmalısınız. Bu bir ya da birlikte A/G/YYYY biçiminde herhangi bir tarih (bulacaksınız

update mytable 
set date = substr(date, -4) || '-' || 
      substr('0' || substr(date, 1, instr(date, '/')-1), -2) || '-' || 
      substr('0' || substr(date, instr(date, '/')+1, 
         length(date)-5-instr(date, '/')), -2) 
where date like '_%/_%/____'; 

: Alınan verilerin biçimini kontrol edemiyorsan

, o zaman ithalat sonrası düzeltme uygulamak önermek gün ve ay için iki basamak) ve YYYY-AA-GG biçimini almak için yıl bölümünü başa hareket ettirir. Orijinal formatın MM/DD/YYYY (ve DD/AA/YYYY değil) olduğundan emin olursanız, bu tüm bu tarihleri ​​düzeltmelidir.

Bu düzeltmeyi birkaç örnek tarih için uygulayan this fiddle'a bakın.

+0

Tarih formatı sorun yaşıyorum. Veritabanına '.import' ile veriyorum ve orijinal veri bu formatta var. Güvenilir dönüştürmenin bir yolu var mı? – nobrandheroes

+0

Tablonuzda yanlış biçimlendirilmiş tarihleri ​​düzeltecek bir tetikleyici oluşturmayı düşünebilirsiniz. – trincot

+0

Cevabımı, tarihleri ​​doğru biçime dönüştürmeyi amaçlayan bir düzeltici 'update' ifadesi içerecek şekilde güncelledim. – trincot

İlgili konular