他們可以爲文本,只要實際值是你所期望的是什麼進行比較。那就是問題所在。
比較文本的日期就像用剪刀跑。但是SQLite讓你隨時都可以用剪刀來運行。當您嘗試插入或如「2011-31-31 08:63:00」更新值
符合SQL標準
sqlite> create table test (d1 datetime primary key);
sqlite> insert into test values ('2011-31-31 08:63:00');
sqlite> select * from test;
2011-31-31 08:63:00
一個DBMS將引發一個「超出範圍」的錯誤。但SQLite讓你插入任何東西。您甚至可以將'Catcall'插入到日期時間列中。 (試一試。)
如果您使用文本,SQLite會爲您提供與「剪刀運行」相同的行爲。
sqlite> create table test (d1 varchar(25) primary key);
sqlite> insert into test values ('2011-31-31 08:63:00');
sqlite> select * from test;
2011-31-31 08:63:00
如果值不是您所期望的那樣,您可能會看到以下類型的行爲。
sqlite> create table test (d1 varchar(25), d2 varchar(25));
sqlite> insert into test values ('2011-01-01 08:00:00', '2011-01-01 08:15:00');
sqlite> select d1<d2 from test;
1
sqlite> update test set d2 = '2011+01-01 08:15:00';
sqlite> select d1<d2 from test;
0
好極了!我看不出有什麼理由不這樣做...... – Damon 2011-03-30 21:43:25