在选定日期内选择语句MS Access

时间:2010-09-21 02:43:03

标签: ms-access

我将有一个日期时间列

的表

我们将其命名为TmStamp,数据为01/01/2001 01:00:PM

还有另一个日期列,我们将其命名为RegDate,数据为01/01/2001

我想选择那个日期的数据。

所以我写了

SELECT * FROM TABLE WHERE RegDate>=#01/01/2001# and RegDate<=#01/01/2001#

我获得了01/01/2001的数据。

然而,

SELECT * FROM TABLE WHERE TmStamp >=#01/01/2001# and TmStamp <=#01/01/2001#

我什么都没得到

只有在我喜欢的情况下,我才能获得01/01/2001的数据。

SELECT * FROM TABLE WHERE TmStamp >=#01/01/2001# and TmStamp <=#02/01/2001#

日期为DD / MM / YYYY格式。

知道为什么会这样吗?

3 个答案:

答案 0 :(得分:1)

在MS Access中,日期/时间字段始终具有时间组件。 RegData字段的时间为00:00:00,因此Access不会向您显示,并且以下查询将起作用

SELECT * FROM TABLE WHERE RegDate>=#01/01/2001# and RegDate<=#01/01/2001#

您首先TmStamp查询实际上正在运行此

SELECT * FROM TABLE WHERE TmStamp >=#01/01/2001 00:00:00# and TmStamp <=#01/01/2001 00:00:00#

由于TmStamp字段有时间,因此不会显示任何结果。

对于时间超过00:00:00的日期/时间字段,您需要执行此查询

SELECT * FROM TABLE WHERE TmStamp >=#01/01/2001# and TmStamp <#02/01/2001#

答案 1 :(得分:0)

我不知道MS Access中日期的内部格式,但讨论是相同的,无论是浮点数(如Excel)还是整数(如Unix日期)。 假设它们被表示为整数,几秒钟......

RegDate是一些数字,xxx。

TmpStamp将是xxx + 13 * 3600。

#01/01/2001#与xxx相同。 #02/01/2001#是xxx + 24 * 3600。

将TmpStamp与日期进行比较不会将其值截断为日期(即xxx)。

答案 2 :(得分:0)

Access中的查询必须使用美国日期或明确的格式,例如ANSI / ISO。 yyyy / mm / dd格式是优选的。话虽这么说,如果你在查询设计窗口中构建你的查询,你有更多的自由度,因为Access将改变你的日期格式。时间成分在这里也是幽冥,在这个问题上也是如此。日期都存储为数字,因此即使您的日期显示为dd / mm / yyyy,您的SQL应该是:

SELECT * FROM TABLE WHERE TmStamp >=#2001/01/01# and TmStamp <=#2001/01/02#