【发布时间】:2013-08-25 10:18:34
【问题描述】:
我的问题可能与SELECT 中的日期格式有关。
在一个 asp 文件中,我打开一个 ADO 记录集,希望检索位于 date1 (08/15/2013) 和 date2 (08/22/2013) 之间的 MS SQL 表的行(即,从今天开始的前 7 天。)
SELECT 确实检索了适当的 2013 年行,但也检索了可追溯到 2012 年 8 月 15 日的行。
这里是选择:
oRS.Source = "SELECT * FROM aTable WHERE entry_Date BETWEEN '" & resultLowerDate & "' AND '" & resultCurrentDate & "' AND entry_Status <> 'INACTIVE'"
resultLowerDate = 08/15/2013 和 resultCurrentDate = 08/22/2013。
表格设置如下,resultCurrentDate = "08/22/2013":
entry_Status entry_Date (varchar) LastName FirstName SELECT Result
INITIAL 08/15/2012 Smith Jim YES
INACTIVE 08/21/2012 Green Tom no
INITIAL 08/22/2013 Jones Mary yes
FOLLOWUP 08/22/2013 Jones Mary yes
FOLLOWUP 08/22/2013 Brown Sally yes
FOLLOWUP 08/22/2013 Smith Jim yes
关于为什么INITIAL 08/15/2012 行与满足SELECT 查询的其他行一起被选中的任何想法?
【问题讨论】:
-
为什么 entry_Date 是一个 varchar???
-
如果@AaronBertrand 不会插入他自己的文章,我会的。 请阅读Choosing the wrong data type和mis-handling date/range queries。可能值得阅读整个不良习惯踢系列。它们都是正确的,如果每个人都阅读它们,Stackoverflow 上的问题就会少很多!
标签: sql-server-2008 date select