我有兩個表的實體 - 說Valid_Doc和Invalid_Doc。如果文檔有效,則將所有數據保存在Valid_Doc表中。如果文檔的任何屬性均無效,則將其保存在兩個表的列的Invalid_Doc.Due_Date中。在Invalid_Doc中,我們正在保存字符串爲的日期無效。允許搜索無效的日期存儲爲字符串 - 是否建議
假設如果通過搜索屏幕文檔用戶搜索與以下日期
DUE_DATE - 是後 - 07/07/11, 咱們都顯示無論從tables.As DUE_DATE在Invalid_Doc文件表是字符串,我們無法將輸入的搜索日期與Invalid_Doc表中的數據庫中可用的日期進行比較。
是否有人可以指導我是否使用DATEDIFF - 即需要在數據庫字符串日期轉換爲日期(的毫秒)第一,然後做與進入data.Doing這一點,有可能是不可預測的結果進行比較。那麼,我們是否允許用戶通過Date或NOT搜索無效的文檔。
Select * FROM invalid_doc iil WITH (nolock) WHERE
CAST(Datediff(s, '19700101 05:00:00:000', iil.due_date) AS NUMERIC) *
1000
BETWEEN '1120501800000' AND '1120501800000'
其中'1120501800000'和'1120501800000'是以毫秒爲單位的日期轉換。
請建議。
我認爲你的主要問題是首先將字符串轉換爲日期時間。那麼請指定你的意思是無效日期?你應該拆分數據,並嘗試使用dd/mm/yyyy字符串將其轉換爲真正的日期格式,然後在聯合加入兩個表並進行全部比較後。 – YvesR
對不起,我出來了,因爲我通過上傳一個xml文件來填充數據庫數據。因此,用戶可以輸入任何日期值,沒有驗證,例如, 100/100/100東西。您是否建議爲無效日期提供搜索功能?或者是否需要添加檢查,如果日期無效,請插入NULL – C4CodeE4Exe