我试图从处理某个位置访问的表中提取数据。访客抵达并在办理登机手续时创建访问日期。我需要列出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
答案 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 *