0

在 access2016 中,有一个带有字段的表 'tbl_employee'。(employee_name, emp_no, date_entry, date_access_created, UserHandledBY) 例如

JohnSmith, 1234, 7/19/2018, 7/24/2018, tim

Mickey, 321, 7/19/2018, 7/19/2018, kim

获取 date_entry 和 date_access_created >= 2 天的所有员工列表的条件。

select employee_name, emp_no, date_entry, date_access_created
from tbl_employee
where date_entry >= 2
4

3 回答 3

1

尝试使用DateDiff

select 
    employee_name, emp_no, date_entry, date_access_created
from 
    tbl_employee
where 
    DateDiff("d", date_entry, date_access_created) >= 2
于 2018-09-25T13:18:10.347 回答
0

@net 正如我在之前的评论中提到的,您似乎打算进行日期差异。如果是这样,那么你可以做

WHERE DATEDIFF(DD, date_entry, date_access_created) >= 2

然后会说该行指定的两个日期之间的差异大于两天。

它的工作方式是,它表示这些日期之间有多少天,在您的第一行示例中,这将是5天数差异。

完整的查询将是:

select employee_name, emp_no, date_entry, date_access_created
from tbl_employee
WHERE DATEDIFF(DD, date_entry, date_access_created) >= 2

从评论中的问题编辑:

是的,您可以排除周末,实际上我不久前就这样做了,并使用了我能找到的最简单的方法。

(DATEDIFF(dd, date_entry, date_access_created) + 1)
    -(DATEDIFF(wk, date_entry, date_access_created) * 2)
    -(CASE WHEN DATENAME(dw, date_entry) = 'Sunday' THEN 1 ELSE 0 END)
    -(CASE WHEN DATENAME(dw, date_access_created) = 'Saturday' THEN 1 ELSE 0 END)

我知道它看起来有很大不同,但它的工作方式与我提到的第一个相同。它使用相同的 datediff 参数,即您的开始日期和结束日期,但它唯一的额外功能是检查那些日子是星期天,哪些是星期六,如果这些日子出现,我们不会从总天数中减去那些日子两个日期之间。

因此,如果您在这两个日期字段之间有 7 天,则表示它是从星期一到星期日。它会说好的,我们在那里有一个星期六和一个星期天,所以这是我们不希望在总计数中的 2 天,所以它会有 7 - 2 = 5 天的差异。

希望这是有道理的。

于 2018-09-25T13:41:30.100 回答
0

网:

我不确定您到底在问什么,但如果您希望查询在 date_entry 和 date_access_created 都等于或大于 2 的情况下工作,您可以在 WHERE 语句中简单地执行此操作。往下看:

select employee_name, emp_no, date_entry, date_access_created
from tbl_employee
where ((date_entry >= 2) AND (date_access_created >= 2))

我所做的只是将 WHERE 行编辑为如下所示
where ((date_entry >= 2) AND (date_access_created >= 2))

添加 AND 功能后,您可以添加用于过滤结果的其他参数。

请让我知道这是否达到了您的预期结果。

于 2018-09-25T13:12:30.093 回答