当日期在 varchar 中没有分隔符时,如何在两个日期之间搜索记录

本文关键字:日期 之间 记录 搜索 两个 varchar 分隔符 | 更新日期: 2023-09-27 18:36:58

我将日期存储在 varchar 列中(我知道的坏主意)没有日期分隔符.. 以 ddMMyyy 格式.. Example: 23-10-2013 is stored as 23102013数据库中。现在我想搜索两个特定日期之间的记录,例如12-10-2013 and 20-10-2013我该如何做到这一点?我正在使用 SQL Server

当日期在 varchar 中没有分隔符时,如何在两个日期之间搜索记录

试试这个:

SELECT *, 
       LEFT(CONVERT(VARCHAR, t.[parseddate], 120), 10) AS ParsedDate2 
FROM   (SELECT *, 
               CONVERT(DATETIME, Stuff(Stuff([startdate], 3, 0, '-'), 6, 0, '-') 
               , 105) 
                      AS 
               ParsedDate 
        FROM   mytable) AS t 
WHERE  t.[parseddate] BETWEEN '2013/10/10' AND '2013/10/20' 

您可能会看到它在这里工作。

有关可用的日期和时间样式,请查看此 MSDN 文章:

CAST and CONVERT (Transact-SQL)。

我建议你3个解决方案。1-更新您的列添加 - 例如:23052012 --> 23-05-2012 您可以使用子字符串来达到目标,然后我将使用比较运算符正常工作。请注意,它仅适用于 dd-mm-yyyy2-使用子字符串将前 2 位数字分隔为天,然后将整数与变量进行比较。3-转换(日期,您的日期)