2015-12-10 76 views
1

我創建了以下架構表tb:SQLITE3:如何檢查輸入的日期

CREATE TABLE tb (name TEXT, dt TEXT DEFAULT (date('now', 'localtime'))); 

然後一個錯誤的日期插入tb的目的:

INSERT INTO tb(name, dt) VALUES("somebody","2015-99-99"); 

它的工作沒有任何警告,並與SELECT * FROM tb我:

somebody|2015-99-99 

date()函數顯示輸入錯誤,(SELECT DATE(dt) FROM tb什麼也沒有返回),但在輸入時我們不知道錯誤。

sqlite3有可能檢查時間戳輸入是否正確?

(SQLite的版本:3.9.1)

+1

你聲明的字段爲'TEXT',何必SQLite的抱怨呢?如果您想以文本形式存儲,請在SQLite之外進行檢查。 – Mundi

回答

1

要檢查區,使用CHECK約束:

CREATE TABLE tb (
    name TEXT, 
    dt TEXT DEFAULT (date('now', 'localtime')) CHECK (date(dt) IS NOT NULL) 
); 
+0

'date()'爲無效輸入返回NULL。 –

相關問題