SQL Server:在字符串数据类型的日期之间搜索

时间:2019-07-05 11:18:46

标签: sql sql-server

我有一个表,其中将日期存储为varchar类型。

SELECT语句中,我要提取表的所有值,但要过滤两个日期的数据BETWEEN

我尝试过转换,这是我得到的最接近的。任何帮助,将不胜感激。我要过滤的日期称为打开日期

SELECT * 
FROM table 
WHERE Opened BETWEEN CONVERT(DATETIME, '01/08/2006', 103) 
                 AND CONVERT(DATETIME, '01/05/2020', 103)

1 个答案:

答案 0 :(得分:0)

我不建议您将between与日期一起使用。 Here很好地解释了为什么,由亚伦·伯特兰(Aaron Bertrand)提供。

select t.*
from table t
where t.opened >= '2016-08-01' and
      t.opened < '2020-05-02'

如果您的opened使用相同的日期格式,请使用:

select t.*
from table t
where convert(date, t.opened, 103) >= '2016-08-01' and
      convert(date, t.opened, 103) < '2020-05-02'

但是,您应该修复表格,以便使用正确的类型而不是字符串来存储日期。