我在 MS Access 中有一个表,其中包含员工详细信息 (tblStaff):
| Employee Number | Employee Name | Dept |
------------------------------------------------
| 205147 | Joe Bloggs | IT |
| 205442 | John Doe | Accounts |
我每周用新数据刷新此表,如果任何记录发生更改(例如更改部门),则它们会连同该记录的有效日期一起存档在另一个表(tblArchiveStaff)中。
| Employee Number | Employee Name | Dept | DateFrom | DateTo |
----------------------------------------------------------------------
| 205147 | Joe Bloggs | HR | 03/01/16 | 01/06/17 |
我正在尝试编写一个查询,该查询将根据给定日期有效的记录从这些表中选择记录
我们可以假设 tblStaff 中的记录从 tblArchiveStaff 中该员工最后一个条目的 dateTo + 1 开始有效,或者从 16 年 1 月 3 日开始有效(如果他们没有存档记录)。
到目前为止,我已经提出了以下查询,我已将 #07/01/2017# 的日期条件硬编码到其中:
SELECT [Employee Number], [Dept], DateFrom, DateTo
FROM
(
SELECT ts.[Employee Number], ts.[Dept], nz(ta2.DateTo,#01/02/16#)+1 AS DateFrom, date() AS DateTo
FROM tblStaff ts LEFT JOIN tblArchiveStaff ta2 ON ts.[Employee Number] = ta2.[Employee Number]
UNION ALL
SELECT ta.[Employee Number], ta.[Dept], ta.DateFrom, ta.DateTo
FROM tblArchiveStaff ta
) AS tblUnion
WHERE #07/01/2017# BETWEEN DateFrom AND DateTo;
据我了解,上述查询应返回 2017 年 7 月 1 日有效的记录,这两个记录都是 tblStaff 中的记录,但它返回 tblArchiveStaff 中的记录。它几乎就像将日期条件视为 1 月 7 日,这意味着它的格式为 dd/mm/yyyy,我认为这是不可能的。
谁能解释一下吗?