[英]how to use like and between in where clause in same statement?
我試圖根據日期在數據庫中查找一組結果。 日期以 dd/mm/yyyy hh:mm:ss 格式存儲為 varchar。
我想做的是搜索指定日期范圍內的所有日期。
例如我試過:
SELECT * FROM table_name
WHERE fromDate BETWEEN LIKE '%12/06/2012%' AND LIKE '%16/06/2012%'
這樣的事情是可能的還是有更好的方法來做這種類型的陳述,因為到目前為止我收效甚微?
我正在使用 Microsoft SQL Server 2008。
彼得
由於您的日期值還包括時間,因此您不能使用 BETWEEN。 唯一安全的方法是:
SELECT <cols> FROM dbo.table_name
WHERE CONVERT(DATE, fromDate, 103) >= '20120612'
AND CONVERT(DATE, fromDate, 103) < '20120617';
但正如 Martin 所注意到的,您永遠無法對該列使用索引,因此這將始終執行全表掃描。
如果您真的非常想使用 BETWEEN,那么轉換為 DATE 是唯一安全的方法(好吧,或者以其他效率較低的方式減少時間):
SELECT <cols> FROM dbo.table_name
WHERE CONVERT(DATE, fromDate, 103) BETWEEN '20120612' AND '20120616';
但出於一致性原因,我建議即使在那種情況下也不要使用 between 。
試試這個
SELECT * FROM table_name
WHERE Convert(Date,fromDate,103)
BETWEEN '20120612' AND '20120616'
最好的解決方案是將您的 varchars 作為 DateTime 存儲在數據庫中。
第二個最好的方法是將 then 轉換為選擇中的日期(正如其他答案所表明的那樣,所以我不打算舉這個例子)
以下對我來說很好用。 試試這個:
SELECT *
FROM [MABH-Desi-Dera].[dbo].[Order]
WHERE (CONVERT(nvarchar,[Order_ID]) BETWEEN '200622%' AND '200623%')
這里的Order_ID
以某個Date開頭:
嗨,伙計,這不是火箭科學,兄弟,只是做一個邏輯
塊引用
SELECT * FROM table_name WHERE fromDate BETWEEN '2021-05-01 12:00:00' AND '2021-05-01 23:59:00'
塊引用
它會起作用,我也卡住了,但它有幫助。 我也在嘗試像你一樣做一個邏輯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.