gpt4 book ai didi

sql - 如何在同一个语句的where子句中使用like和 between?

转载 作者:行者123 更新时间:2023-12-04 22:49:24 25 4
gpt4 key购买 nike

我试图根据日期在数据库中查找一组结果。日期以 dd/mm/yyyy hh:mm:ss 格式存储为 varchars。

我想做的是搜索指定日期范围内的所有日期。

例如我试过:

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';
但出于一致性原因 I recommend against between even in that case .

关于sql - 如何在同一个语句的where子句中使用like和 between?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11137293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com