代码之家  ›  专栏  ›  技术社区  ›  william

选定日期内的select语句MS Access

  •  0
  • william  · 技术社区  · 15 年前

    我将有一个带有datetime列的表

    我们把它命名为TmStamp,数据是01/01/2001 01:00:PM

    所以我写

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

    我得到2001年1月1日的数据。

    然而,

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

    我什么也没得到

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

    日期为DD/MM/YYYY格式。

    知道为什么吗?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Croberts    15 年前

    在MS Access中,日期/时间字段总是有一个时间组件。RegData字段的时间为00:00:00,因此Access不会向您显示它,下面的查询将起作用

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

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

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

    SELECT * FROM TABLE WHERE TmStamp >=#01/01/2001# and TmStamp <#02/01/2001#
    
        2
  •  0
  •   pascal    15 年前

    我不知道msaccess中日期的内部格式,但是讨论的内容是相同的,不管是浮点(比如Excel)还是整数(比如Unix日期)。

    RegDate是一个数字,xxx。

    #2001年1月1日#与xxx号相同。 #2001年1月2日#是xxx+24*3600。

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

        3
  •  0
  •   Fionnuala    15 年前

    Access中的查询必须使用US date或明确的格式,如ANSI/ISO。首选yyyy/mm/dd格式。也就是说,如果您在查询设计窗口中构建查询,您就有了更多的自由度,因为访问权限将为您更改日期格式。时间成分在这件事上是虚无的。日期都存储为数字,因此即使您的日期显示为dd/mm/yyyy,您的SQL也应为:

    SELECT * FROM TABLE WHERE TmStamp >=#2001/01/01# and TmStamp <=#2001/01/02#
    
    推荐文章