簡體   English   中英

如何在同一語句中的 where 子句中使用 like 和 between?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM