ms доступ к критериям запроса sql между полями дат - PullRequest
0 голосов
/ 25 сентября 2018

в 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 голосов
/ 25 сентября 2018

Попробуйте с DateDiff :

select 
    employee_name, emp_no, date_entry, date_access_created
from 
    tbl_employee
where 
    DateDiff("d", date_entry, date_access_created) >= 2
0 голосов
/ 25 сентября 2018

@ 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)

Я знаю, что это выглядит совсем по-другому, но, кстати,это работает так же, как первый, который я упомянул.Он использует те же параметры датированных значений, которые являются вашими датами начала и окончания, но единственное, что он делает, это проверяет те дни, которые являются воскресеньями, а какие субботами, и, если эти дни появляются, мы обычно минус те из общего числа дней.между двумя датами.

Итак, если между этими двумя полями дат было 7 дней, скажите, что они проходили с понедельника по воскресенье.Было бы хорошо сказать, что у нас есть одна суббота и одно воскресенье, поэтому мы не хотим, чтобы в общем количестве было 2 дня, поэтому разница составила бы 7 - 2 = 5 дней.

Надеюсь, это имеет смысл.

0 голосов
/ 25 сентября 2018

Net:

Я не уверен, что именно вы спрашиваете, но если вы хотите, чтобы ваш запрос работал так, что ОБА 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))

Добавляя в функцию AND, вы можете ввести дополнительные параметры для фильтрации ваших результатов.

Пожалуйста, дайте мне знать, если это достигло ваших ожидаемых результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...