当日期在 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
试试这个:
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-转换(日期,您的日期)