У меня есть хранимая процедура, которая обновляет таблицу на основе такого расчета, а расчет производится как имя столбца (Calendatedate
) - (Current System Date Time
) и обновляет это информацию в колонку (TimeSpent
) и отобразить значение в формате Hh:Mm:SS:Msec
.HH: MM: SS: Msec to HH: MM: SS в хранимой процедуре
Запрос работает нормально, но я хочу обновить его таким образом, чтобы потраченное время должно быть только HH:MM:SS
. Пожалуйста, помогите мне, как я удалю это Msec
с потраченного времени.
CREATE procedure St_Proc_UpdateTimeSpent
@timeEntryID int,
@status int output
as begin
set nocount on;
declare @Date dateTime;
set @Date=GETDATE();
update Production set TimeSpent=(SELECT CONVERT(VARCHAR(20),DateAdd(SS,Datediff(ss,CalendarDate, @Date)%(60*60*24),0),114)),
IsTaskCompleted=1
where [email protected]
set @status=1;
return @status;
end
Добро пожаловать в StackOverflow: если вы отправляете код, XML или образцы данных **, пожалуйста ** выделите эти строки в текстовом редакторе и нажмите кнопку «образцы кода» ('{}') на панели инструментов редактора, чтобы приятно формат и синтаксис выделить его! –
Не хватит ли вам сделать 'CONVERT (VARCHAR (8), ....)' вместо 'CONVERT (VARCHAR (20) ...'? – Lamak
Какой тип данных 'TimeSpent'? это 'VARCHAR()', почему вы не используете 'DATETIME'? Если вы используете' DATETIME', вы не пытаетесь установить форматирование в таблице * (A 'DATETIME' не имеет формат, это двоичный тип) *, вместо этого вы устанавливаете форматирование, когда вы выбираете значения из таблицы (или, что еще лучше, в вашем уровне представления), путем преобразования значения в строку и выбора формата в этот момент времени – MatBailie