2017-09-22 157 views
2

從Sqlite讀取日期字段到Firedac時,出現轉換錯誤。這些字段稱爲日期,但帶有字符串條目(yyyy-mm-dd)。我爲日期時間格式=字符串設置了選項,但我發現儘管空值處理正常,空值(='')產生一個錯誤,我不知道如何處理。從Sqlite與Delphi/Firedac讀取日期

+0

你能發表一些代碼嗎? Sqllite將日期存儲爲字符串或整數,因此您可能需要進行一些轉換。如果我們看到一些代碼,也許我們可以幫助.. –

+0

那麼,空字符串不是有效的日期字符串。他們應該怎麼處理? –

回答

2

您可以啓用StrsEmpty2Null選項,該選項將自動將所有空字符串轉換爲NULL狀態。但它適用於由數據組件處理的所有值和參數。所以這不是治癒。

我不確定你在做什麼,但一般情況下,NULL是一個狀態,你不能將NULL狀態轉換爲一個值,因爲它是一個指示沒有值的狀態。所以,你不能將空字符串轉換爲日期。

因此,儘量多描述一下你對字符串轉換的價值,所以我們可以建議一個正確的方法來處理它。對於SQLite,我建議使用DATE僞數據類型並通過內置的格式化表達式轉換值。

+0

謝謝。 StrsEmpty2Null選項解決了問題。我創建的應用程序可以從任何Sqlite數據庫中列出表格和字段並執行查詢。弗雷德克無法處理日期字段中的空字符串,這讓我感到不安。當然,對於有針對性的數據庫應用程序,數據庫不應該包含空字符串和空字符串的混合。 –

+0

不客氣!但是,對於像你所描述的工具來說,啓用'StrsEmpty2Null'選項並不好(因爲它會將所有空字符串值和參數值清空)。如果我作爲此類應用程序的用戶想要查看哪些值爲空且哪些值爲NULL,該怎麼辦?讓我們找到更好的方法。您能否詳細說明您如何使用數據集組件?你建立持久性領域?或者什麼時候引發異常或導致某些問題? – Victoria

+0

StrsEmpty2Null顯示清空和空值相同,但我仍然可以分別查詢空(x ='')或空(x = null)。但是,它不會幫助糟糕的數據,如日期='2009-02-29'。 –