2011-04-12 55 views
1

HI,VB6:CDate(某日期)返回運行時錯誤13

我有這樣的字符串:「2010-12-27 23:05:36.0」。當我用這樣的CDate解析它時:CDate(「2010-12-27 23:05:36.0」)它返回錯誤13. 當我從字符串中刪除'.0'時它工作正常。

日期字符串來自數據庫,其中日期的格式如下:'yyyy-mm-dd'和'yyyy-mm-dd hh-MM-ss.n'什麼是簡單的方法擺脫錯誤13?

+0

「最好的解決方案是不將日期存儲爲字符串」是一個正確的建議。 *至少*在列上加上一個「CHECK」約束,以確保您對兩種日期格式的假設得到保證。 – onedaywhen 2011-04-13 07:21:42

回答

1

你可以檢查字符串的長度 - >如果> 19,擺脫了休息,然後應用CDate函數

5

最好的辦法是不要保存日期爲字符串。所有數據庫都可以處理日期,並且ADO可以直接返回日期值而無需將其轉換爲字符串。如果日期數據作爲日期類型存儲,則可能根本不需要使用CDate。返回的記錄集將包含作爲Date變體的基礎數據。

如果數據存儲爲字符串畢竟,您可以修改您的SQL語句,以使用DB的內置函數將字符串轉換爲日期。在SQL Server中,您可以使用CAST和CONVERT函數來完成此操作。

CAST(myDateAsTextField as datetime) 

SQL Server的DATETIME數據類型接受具有1至3位數小數秒。

最後,您可以在調用CDate之前檢查字符串的內容並將其轉換爲其他形式。如果您無法在數據庫級別修復數據,則應該將此作爲最後的手段。