[英]Filter values by Date and ComboBox Vb.Net Mysql
我想過濾日期和 combobox 中的值之間的值,我試過:
adapter.SelectCommand = New MySqlCommand("SELECT * FROM loins LIKE date(dateprocessed) between '" & DateTimePicker1.Value.ToString("yyyy-MM-dd") & "' and '" & DateTimePicker2.Value.ToString("yyyy-MM-dd") & "' WHERE projectcode= '" & ComboBox1.Text & "' ORDER BY code ASC", conn.getConnection)
並給出錯誤:
Additional information: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE date(dateprocessed) between '2021-09-20' and '2021-09-25' WHERE projectcode' at line 1
正如提到的問題下的評論,您需要做的就是用“where”子句替換“like”。 只想對查詢添加一些優化:
首先也是最重要的是,當您將 DateTime 字段轉換為日期時,您的查詢將不會使用索引,並且隨着數據的增長將開始花費極長的時間來完成查詢。 就我而言,在 7000 萬行中查詢最近 2 天(約 30,000 行)的數據,對於一些復雜的查詢,使用日期(列)轉換需要 46 分鍾,如果沒有轉換則需要 6 秒。
正如上一點所暗示的,轉換甚至可能沒有任何目的,並且可能再次導致一些錯誤。
DateTime '2021-09-25 10:21:30' 落在 '2021-09-25' 和 '2021-09-26' 之間,即使沒有將其轉換為日期,這些日期之間的所有其他 DateTimes 也是如此。
即使您查詢的結果介於“2021-09-25”和“2021-09-26”之間,日期時間“2021-09-26 11:16:24”也會包含在您的結果中。 根據您的要求,這可能是您想要的東西或不需要的東西。 如果要包含它,只需從“2021-09-25”到“2021-09-27”進行查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.