SQl按日期范围查询搜索

时间:2010-03-26 10:01:21

标签: sql ms-access datetime ms-access-2007

我在Access 2007数据库中有一个表。所有字段都是文本类型。可以使用where子句完成以下操作吗?如果是这样的话?

  • SELECT * from Table1 WHERE(ColumnDate介于2010年3月26日至19日)
  • SELECT * from Table1 WHERE(ColumnAge介于25和40之间)

通常< < =运营商似乎无法运作。

谢谢,

4 个答案:

答案 0 :(得分:6)

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#符号之间的Access中表示。 您应该将日期存储为日期字段:)

答案 1 :(得分:1)

SELECT * from Table1 WHERE ColumnDate between '2010-03-26' and '2010-03-19'
SELECT * from Table1 WHERE ColumnAge between 25 and 40

我不使用Access,所以YMMV。

答案 2 :(得分:1)

尝试使用ColumnDate功能将CDate转换为实际日期/时间。我想,可以使用CInt转换为int。

我不使用Access,所以这只是一个常识猜测。

答案 3 :(得分:0)

大卫 - 芬顿先生是对的,马塞洛的第一个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#

作为正确的解决方案。