我将有一个日期时间列
的表我们将其命名为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格式。
知道为什么会这样吗?
答案 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#