[英]Lines where datetime is between 2 datetime values SQL
我只想讓datetime的值介於2個值之間的sql值。
我用這個代碼
filterdatum = "(Datum >= "+ startwaarde + " AND Datum < "+ eindwaarde+ ")";
filter = filter + " AND " + filterdatum;
我的過濾器如下所示:
where "(Type like '%13%') AND (Datum >= 11/04/2013 00:00:00 AND Datum < 23/04/2013 00:00:00)"
我總是收到此錯誤:
'00'附近的語法不正確。
將日期放在單引號之間:
filterdatum = "(Datum >= '"+ startwaarde + "' AND Datum < '"+ eindwaarde+ "')";
filter = filter + " AND " + filterdatum;
提示 :下一次可以做的簡單測試是直接在數據庫中執行查詢,並檢查其是否有效。
更好的選擇是將日期值作為參數傳遞給查詢。 將日期值作為字符串直接放在查詢字符串中總是有問題的。 創建和傳遞參數的確切代碼取決於您的數據訪問技術。
如果使用的是ADO.NET,則應編寫:
filterdatum = "(Datum >= @startDate AND Datum < @endDate)";
...
command.Parameters.AddWithValue("@startDate", startwaarde);
command.Parameters.AddWithValue("@endDate", eindwaarde);
確保引用日期時間,否則SQL可能會認為它們是表/列名稱?
您應該在日期值之間使用單引號。
filterdatum = "(Datum >= '"+ startwaarde + "' AND Datum < '"+ eindwaarde+ "')";
但更重要的是,您應始終使用參數化查詢 ,此類代碼對SQL注入攻擊開放。
例如;
SqlConnection conn = new SqlConnection(_connectionString);
conn.Open();
string s = "SELECT * From YourTable WHERE Datum >= @startwaarde AND Datum < @eindwaarde";
SqlCommand cmd = new SqlCommand(s);
cmd.Parameters.Add("@startwaarde", startwaarde);
cmd.Parameters.Add("@eindwaarde", eindwaarde);
SqlDataReader reader = cmd.ExecuteReader();
startwaarde.ToString("o")
,假設startwaarde
的類型為DateTime。 (Datum >= @1 AND Datum < @2)
並且假設您正在數據庫中進行過濾,並且SqlCommand
兩個值作為參數添加到SqlCommand
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.