ms访问日期字段之间的sql查询条件

时间:2018-09-25 11:36:58

标签: sql ms-access

在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

3 个答案:

答案 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天。

希望这是有道理的。