Я пытаюсь выяснить, как долго сотрудники работают в компании, и я также должен выяснить, не работает ли какой-либо из сотрудников иметь дату отставки.Конверсия не удалась при преобразовании значения varchar '2 year -2 month 21 day' в тип данных int
Но у меня нет данных для этого прямо сейчас, поэтому значение этого столбца в моей базе данных Null. Но я считаю, что в моем sql, когда это произошло, вместо Date Date вместо Date Date, но теперь наберите дату начала работы и текущее время. моя теория заключается в том, что если дата отставки столбца равна нулю, возьмите «Текущая дата - дата начала работы», иначе , если она займет отставку - дата начала работы.
Я написал запрос SQL для этой теории, и она работает нормально, но когда я попытался возвращение на экс год месяц день, как долго сотрудников, работающих у меня есть проблема, которая:
а) Я боролся с этой ошибкой для часов, и я также попытался преобразовать эти строки, я думал, что его следует преобразовать, но это не работает хорошо, поэтому, когда я запускаю мой главный запрос, я получаю эту ошибку:
> Msg 245, Level 16, State 1, Line 1
> Conversion failed when converting the varchar value '2 year -2 month 21 day' to data type int.
Мой главный запрос выглядит следующим образом:
**--- sql for how long employees work with year month day ----**
CASE
WHEN Users.ResignationDate IS NOT NULL
THEN DATEDIFF(YEAR, WorkStartDate, ResignationDate)
ELSE CAST(DATEDIFF(yy, WorkStartDate, GETDATE()) AS varchar(4)) + ' year ' +
CAST(DATEDIFF(mm, DATEADD(yy, DATEDIFF(yy, WorkStartDate, GETDATE()), WorkStartDate), GETDATE()) AS varchar(2)) + ' month ' +
CAST(DATEDIFF(dd, DATEADD(mm, DATEDIFF(mm, DATEADD(yy, DATEDIFF(yy, WorkStartDate, GETDATE()), WorkStartDate), GETDATE()), DATEADD(yy, DATEDIFF(yy, WorkStartDate, GETDATE()), WorkStartDate)), GETDATE()) AS varchar(2)) +' day' END as Ancinitet,
Paychecks.DepartmentName AS Afdelinger
FROM dbo.Paychecks INNER JOIN dbo.Users ON Users.Id=Paychecks.UserId
WHERE Users.CustomerId=214 order by Users.FirstName;
Я хотел бы предложить упростить запрос, чтобы локализовать проблему. –
Я только что отредактировал запрос, пожалуйста, посмотрите, если это не так, скажите мне – RyaN
, почему вы показываете разные результаты для обоих случаев. Если дата отставки не равна нулю, вы используете датифик, а когда равно null, то вы добавляете год, месяц и дни на выходе. –