MS Access,从早上 6 点到第二天早上 6 点从数据库中选择 * 的查询

MS Access, Query that selects * from db from 6AM to 6AM next day

我正在采取大量方法来使其发挥作用。 我需要根据 table dbAwarieZamkniete.

生成报告

我需要从 dbAwarieZamkniete 中获取 ALL,所以当我 select 从访问表单的文本框中获取 short date 时,基于此我想 运行 query 会抓取数据。

假设我需要 2016 年 5 月 10 日的记录,这意味着我需要 2016 年 5 月 10 日 06:00 到 2016 年 5 月 11 日 06:00.

的记录

我的方法不同,我试过union例如,我不会把所有的都贴在这里,这只是一个例子:

SELECT *
FROM   dbAwarieZamkniete AS AwaZam
WHERE  Format(AwaZam.dataZgloszenia, "d-m-yyyy") = '03.09.2015'
AND ( Format(AwaZam.godzinaZakonczenia, 'hh:mm') BETWEEN '06:00' AND '23:59' )

UNION ALL

SELECT *
FROM   dbAwarieZamkniete AS AwaZam
WHERE  Format(AwaZam.dataZgloszenia, "d-m-yyyy") = '04.09.2015'
AND (( Format(AwaZam.godzinaZakonczenia, 'hh:mm') BETWEEN '00:00' AND '06:00' );

dataZgloszenia 包含日期(作为 d.m.yyyy)- 短日期

godzinaZgloszenia 包含时间(如 h:m)- 短时间

  1. 您将日期设置为 d.m.yyyy 但在您使用的代码中 d-m-yyyy

    SELECT *
    FROM   dbAwarieZamkniete AS AwaZam
    WHERE  Format(AwaZam.dataZgloszenia, "d.m.yyyy") = '03.09.2015'
    AND ( Format(AwaZam.godzinaZakonczenia, 'hh:mm') BETWEEN '06:00' AND '23:59' )
    
    UNION ALL
    
    SELECT *
    FROM   dbAwarieZamkniete AS AwaZam
    WHERE  Format(AwaZam.dataZgloszenia, "d.m.yyyy") = '04.09.2015'
    AND (( Format(AwaZam.godzinaZakonczenia, 'hh:mm') BETWEEN '00:00' AND '06:00' );
    
  2. 如果需要,可以将两个条件合并在一起。

    SELECT *
    FROM   dbAwarieZamkniete AS AwaZam
    WHERE (
        Format(AwaZam.dataZgloszenia, "d.m.yyyy") = '03.09.2015' 
        AND 
        (Format(AwaZam.godzinaZakonczenia, 'hh:mm') BETWEEN '06:00' AND '23:59' )
          )
    
    or (
        Format(AwaZam.dataZgloszenia, "d.m.yyyy") = '04.09.2015' 
        AND 
        ( Format(AwaZam.godzinaZakonczenia, 'hh:mm') BETWEEN '00:00' AND '06:00' )
        )
    

始终将日期作为日期处理,而不是文本,无一例外。

所以:

SELECT *
FROM   dbAwarieZamkniete AS AwaZam
WHERE  AwaZam.dataZgloszenia + AwaZam.godzinaZakonczenia
       Between 
           DateAdd("h", 6, #2016/05/10 00:00:00#)
           And
           DateAdd("h", 6 + 24, #2016/05/10 23:59:59#)

使用文本框中的日期:

SELECT *
FROM   dbAwarieZamkniete AS AwaZam
WHERE  AwaZam.dataZgloszenia + AwaZam.godzinaZakonczenia
       Between 
           DateAdd("h", 6, DateValue([Forms]![YourForm]![YourTextbox]))
           And
           DateAdd("h", 6 + 24, DateValue([Forms]![YourForm]![YourTextbox]) + #23:59:59#)