无法从特定日期范围内提取记录

时间:2016-04-11 16:44:33

标签: sql sql-server date between date-range

我试图从处理某个位置访问的表中提取数据。访客抵达并在办理登机手续时创建访问日期。我需要列出2015年7月1日到2015年12月31日之间所有访问的列表。看起来很简单,对吗?

这是我的疑问:

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

(注意:我将这些日期视为字符串,因为此表中的VisitDate字段因某些荒谬的原因而具有varchar数据类型 - 我不知道是谁设置了它但是我&# 39;我必须在几个不同的场合处理这个问题。)

问题在于我获得了所有正确的结果,但我也获得了 2014 的7月至12月的结果,我只想要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

2 个答案:

答案 0 :(得分:1)

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

在比较前键入日期的值。

答案 1 :(得分:0)

用户 STR_TO_DATE

import Scientific
assert [int(x) for x in Scientific.__version__.split('.')] >= [2, 8]
from ase.calculators.jacapo.jacapo import *