从特定日期范围内提取记录时遇到问题

Trouble pulling records from a certain date range

我正在尝试从处理对某个位置的访问的 table 中提取数据。访客到达并在签到时创建访问日期。我需要列出 2015 年 7 月 1 日至 2015 年 12 月 31 日期间发生的所有访问的列表。看起来很简单,对吧?

这是我的查询:

SELECT VisitorID, VisitorName, VisitDate
FROM VisitList
WHERE VisitDate BETWEEN '07/01/2015' AND '12/31/2015'

(注意:我将这些日期视为字符串,因为此 table 中的 VisitDate 字段出于某些荒谬的原因具有 varchar 数据类型——我不知道是谁这样设置的,但是我不得不在几个不同的场合处理这个问题。)

问题是我得到了所有正确的结果,但我也得到了 2014 七月至十二月的结果,我只想要 2015 年的结果。什么可能是造成这种情况的原因,我该如何解决?

我还尝试将 VisitDate 字段转换为 DATE 数据类型,并去掉了 WHERE 子句中日期周围的引号,但无济于事。

更新: 这是对 Cast 的查询:

SELECT VisitorID, VisitorName, CAST(VisitDate AS Date) as Visit_Date
FROM VisitList
WHERE VisitDate BETWEEN 07/01/2015 AND 12/31/2015

用户STR_TO_DATE

SELECT VisitorID, VisitorName, VisitDate
FROM VisitList
WHERE STR_TO_DATE(VisitDate , '%d/%m/%Y') BETWEEN str_to_date('07/01/2015', '%m/%d/%Y') AND str_to_date('12/31/2015', '%m/%d/%Y')
SELECT VisitorID, VisitorName, VisitDate FROM VisitList WHERE CAST(VisitDate As date) between CAST('07/01/2015' as date) and CAST('12/31/2015' as date)

您需要转换为 varchar

要在比较前键入日期的值。