SQl按日期范围查询
我在Access 2007数据库中有一个表。所有字段都是文本类型。使用where子句可以完成以下任务吗?如果是这样如何?SQl按日期范围查询
- SELECT从表1 * WHERE(ColumnDate是2010年3月的第26和19之间)
- SELECT从表1 * WHERE(ColumnAge是25和40之间)通常< < =运算
似乎没有工作。
感谢,
SELECT * from Table1 WHERE (CDATE(ColumnDate) BETWEEN #03/26/2010# AND #03/19/2010#)
SELECT * from Table1 WHERE (CINT(ColumnAge) between 25 and 40)
日期在#MM/DD/YYYY#
表示在#
符号之间的访问。 你应该真的将日期存储为日期字段:)
SELECT * from Table1 WHERE ColumnDate between '2010-03-26' and '2010-03-19'
SELECT * from Table1 WHERE ColumnAge between 25 and 40
我不使用Access,所以因人而异。
您不使用Access,并发布不会在Access中运行的SQL。如果列中的所有日期存储为yyyy-mm-dd,则第一个将起作用,但不以其他方式存储。第二个不行,因为原来的问题说所有的字段都是文本。 – 2010-03-26 19:04:47
尝试使用CDate
函数将ColumnDate
转换为实际日期/时间。我想可以用CInt
来完成转换为int的操作。
我不使用Access,所以这只是一个常识性的猜测。
这些内置的SQL函数,如果是这样,他们如何在查询中调用它们。一个例子,将不胜感激。 – tecno 2010-03-26 10:09:34
其实Anton Gogolev的回答提醒我把它们放到我的样本中。所以,他配得上我:) – Codesleuth 2010-03-26 10:11:16
Mr.David-W-Fenton说得对,Marcelo的第一个SELECT * from Table1 WHERE ColumnDate between '2010-03-26' and '2010-03-19'
不工作,并且错误地暗示原因。该条款是不正确的,因为日期字符串表示引号,日期格式非常好。所以我认为
SELECT * from Table1 WHERE CDATE(ColumnDate) between #2010-03-26# and #2010-03-19#
一个妥善的解决办法。
唷,你说得对,我只是跟着马塞洛。谢谢,修复查询。 – 2012-12-02 08:23:29
谢谢, 我需要搜索那些年龄介于25到40岁之间的人。 – tecno 2010-03-26 10:07:22
BETWEEN结果包括两个外部范围值。你应该得到年龄在25岁到40岁之间的人。 – Codesleuth 2010-03-26 10:10:06
谢谢再次感谢。 – tecno 2010-03-26 10:16:19