在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
答案 0 :(得分:1)
尝试使用 DateDiff :
select
employee_name, emp_no, date_entry, date_access_created
from
tbl_employee
where
DateDiff("d", date_entry, date_access_created) >= 2
答案 1 :(得分:0)
净额:
我不确定您要问的是什么,但是如果您希望在date_entry和date_access_created都等于或大于两个的情况下进行查询工作,则只需在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))
添加“与”功能后,您可以添加其他参数来过滤结果。
请告诉我这是否达到了您的预期效果。
答案 2 :(得分: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天。
希望这是有道理的。