我正在使用LINQ-to-SQL並需要按日期字段進行排序。日期字段以文本形式存儲,並且可以包含任何內容,因爲它是用戶輸入的數據。我需要處理無效日期放在那裏的情況。
例如,「02/23/0000」返回日期:LINQ轉換日期,需要處理不好的日期
varchar數據類型爲datetime數據類型的轉換導致外的範圍內的值。
我需要避免錯誤,我不在乎這樣的無效日期得到排序。該項目的參數意味着我無法修改我的源數據,只能從中讀取。
這裏是一個LINQ語句的例子。
from x in dbo_myTable
orderby Convert.ToDateTime(x.MyDateField)
select x
這就是爲什麼你不把日期存儲在varchar字段! – Jamiec
我認爲最大的問題是「日期字段以文本形式存儲,並且可能包含任何內容,因爲它是用戶輸入的數據」...爲什麼您不使用正確的數據類型並驗證輸入,因此人們無法東西垃圾到你的數據庫?要做到這一點的最簡單方法是在那裏有一百萬個免費的日曆控件。除此之外,你可以使用ISDATE()過濾你的數據,但這就像在霰彈槍傷口上使用創可貼。 –
如果與數據有一定的一致性,則可能會有解決方法。所有日期字符串都是10個字符? 格式化爲「DD/DD/DDDD」? D - 數字? – Aducci