Member 12314309 Ответов: 1

Как часы, рассчитать день , сверхурочные от времени входа и выхода


у меня есть время входа и выхода ,в котором я вычисляю часы из времени входа и выхода,теперь я хочу, чтобы когда часы =8, то день будет равен 1, а если часы больше, то до 8 часов(например :12 часов минус от 8 часов =4 часа, то 4 часа умножаются на 100).)

мне нужна процедура хранения ...

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

SELECT     INTime, Outtime, DATEDIFF(Hour, INTime, Outtime) AS Hours
if
Hours = 8
FROM         EmployeeAttedance

OriginalGriff

И что же?
Что вы пробовали, и что произошло, когда вы попробовали это?
Какая помощь вам нужна?

Member 12314309

я попробовал это (SELECT INTime, Outtime, DATEDIFF(Hour, INTime, Outtime) как часы
От EmployeeAttedance)
Теперь я хочу день рассчитать, если час=8, то день будет 1

OriginalGriff

Да, я догадался об этом из вашего вопроса...

И что же вы на самом деле пытались сделать?

Member 12314309

проверьте это объявление
@Hou int
@Часов в инт
Set @Hou=8

Выберите Интайм, Outtime, функция datediff(час, Интайм, Outtime) как часы,
если
@Hours= @Hou then Day="1"

От EmployeeAttedance

OriginalGriff

И что же? Что случилось, когда вы попробовали это сделать?

Member 12314309

он не выполняется и дает ошибку

OriginalGriff

Это очень полезно.
И конкретная ошибка или просто "+++из сырной ошибки в 14, патока Майн-роуд, Анк-Морпорк+++"?

И что вы сделали, чтобы выяснить, почему это дает ошибку?

#realJSOP

На это становится больно смотреть...

OriginalGriff

Мне знакомо это чувство...

1 Ответов

Рейтинг:
11

MadMyche

Я исправлю SQL-оператор, который у вас есть

DECLARE   @punches TABLE ( PunchIn time, PunchOut time )
INSERT @punches VALUES ('07:58', '16:15')

SELECT	PunchIn, PunchOut
	,	[Hours] = DateDiff(Hour, PunchIn, PunchOut) 
	,	[Days] = CASE WHEN  DateDiff(Hour, PunchIn, PunchOut) >= 8 THEN 1 ELSE 0 END
FROM @punches
Я должен сообщить вам, что в вашей логике есть несколько потенциальных недостатков.
1 - Если кто-то работает в "двойную смену" в течение 16 часов, будет ли это 2 дня?
2 - А как насчет кого-то, кто работает в ночную смену?
3 - Если кто-то работал 1 день, вы хотели бы, чтобы часы сократились на 8?


#realJSOP

Не имеет значения, сколько смен они работают. Важно то, сколько часов они работают в неделю. Все, что превышает 40 часов, считается сверхурочным. Возможно, его инструктор недостаточно хорошо объяснил проблему.

MadMyche

Моя цель состояла в том, чтобы дать базовое решение проблемы ОП и некоторые ситуации, о которых нужно подумать.
И 40 часов - это не единственное определение сверхурочной работы. В нескольких штатах США она действует в виде 8-часовых смен.

Member 12314309

спасибо за это help...my дальнейший пункт заключается в том, что если часы больше, чем до 8 часов, как 12 часов, то он получает минус от стандартных часов работы, которые составляют 8 часов, и умножается на стандартную ставку OT, которая составляет 100 ставок (12 часов - 8 часов=4 часа) 4 часа*100=400, что является суммой сверхурочных =400

MadMyche

Как было сказано в моем предыдущем ответе, я просто помогал вам с вашей ошибкой SQL. Я также знал, что ваш вопрос был недальновидным и что потребуется больше; отсюда и беспокойство в моем ответе. e хранение времени удара в БД. Ваше приложение должно получить эту информацию и выполнить фактические вычисления и отчетность.