0

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

4

2 回答 2

5

尝试这个:

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 和 CONVERT (Transact-SQL)

于 2013-10-25T06:19:51.013 回答
0

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

于 2013-10-25T06:17:34.760 回答