Flower@12 Ответов: 4

Как добавить datetime в SQL


Мне нужно суммировать время в таблице посещаемости сотрудников.

Поля Таблицы Посещаемости

ID         numeric(18)-(Auto Increment field)
EmpID      numeric(18)
EntryType  nvarchar(25)
EntryTime  datetime


Табличные Значения Выглядят Следующим Образом
ID    EmpID     EntryType    EntryTime
1     1001       IN          2019-03-31 08:30:00 AM
2     1003       IN          2019-03-31 08:45:00 AM
3     1003       OUT         2019-03-31 05:30:00 AM
4     1004       OUT         2019-03-31 05:35:00 AM



Теперь мне нужно суммировать время входа и выхода данного сотрудника, как это сделать?

Что я уже пробовал:

я ищу гулга результаты таковы
"используйте функцию DateADD"
Но я не знаю Пожалуйста помогите мне сэр

W∴ Balboos, GHB

Когда Вы наконец поймете, как использовать данные из ответов, подумайте также, как убедиться, что у вас действительно есть пары входов/выходов для каждого сотрудника - если они не сделали выход - что вы будете делать? Что, если они сбежали в первый и во второй день ? Суммирование ежедневных различий-это, по сути, самая легкая часть.

4 Ответов

Рейтинг:
2

Maciej Los

Вы не предоставили достаточно подробных сведений о своей проблеме, особенно о том, что In и Out записи... Могут ли они превышать один день?

Если In-Out записи не превышают одного дня, вы должны создать пару In-Out записи для каждого пользователя в день. Затем вы должны рассчитать время в минутах. Вы можете использовать Функция dateadd[^] функция для достижения этой цели: DATEDIFF(n, OutTime, InTime)

Наконец, вы должны суммировать общее время на одного пользователя.

EmpID     IN                        OUT                      StayTime(Minutes)
1001      2019-03-31 08:30:00 AM    2019-03-31 04:30:00 PM   480
1002      2019-03-31 08:30:00 AM    2019-03-31 03:45:00 PM   435


Рейтинг:
1

Shraddha_Patel

SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '03:30:00')


Рейтинг:
0

OriginalGriff

Вы не можете добавить два значения даты и времени, так же как вы не можете добавить два телефонных номера - результат не является чем-то разумным или полезным. Вы можете вычесть две даты, которые дают вам промежуток времени, который может быть выражен несколькими способами, причем минуты являются одним из них.

Так что начните с "сопоставления" вашего времени прихода и ухода для ваших сотрудников - это, вероятно, будет достаточно трудно для вас на данном этапе - а затем посмотрите на вычитание их, чтобы узнать, как долго они работали. Когда у вас есть это, вы можете начать агрегировать данные, чтобы получить свои итоги.


Рейтинг:
0

Nirav Prabtani

Вы должны использовать функция DateDiff[^] функция для достижения вашей потребности.

Вы должны найти максимальное время выхода и минимальное время в пользовательской мудрости, тогда вы можете использовать функцию DATEDIFF следующим образом

SELECT DATEDIFF(MINUTE, ENTRY_TIME_OUT, ENTRY_TIME_IN) AS DateDiff;


Это вернет общее время относительно времени входа/выхода в минутах.


Maciej Los

Upvoted, чтобы устранить несправедливое голосование вниз!

Nirav Prabtani

Спасибо,я очень ценю это

Я часто испытываю это, кто-то намеренно делает это во всех моих недавних ответах.

В любом случае, я желаю ему/ей поскорее выздороветь :)