SQL Conversion de int varchar

J'ai besoin d'aide de la conversion d'un integer à un varchar.

Je suis en train d'écrire une procédure qui prend un ProfileID et un Currenttime; à l'aide de ces deux valeurs qu'il trouve le temps de démarrage de l' profileID et soustrait currenttime de
starttime et retourne hours:minutes:seconds.

Ce que je fais mal, est-il une meilleure façon d'écrire cela?

Grâce.

CREATE PROCEDURE [dbo].[CalculateElaspedTime]
    -- Add the parameters for the stored procedure here
    @ProfileID nvarchar(10),
    @CurrentDateTime datetime = '' 
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    if @CurrentDateTime = CAST('' as datetime)
    set @CurrentDateTime = GETDATE()

    DECLARE @StartTime datetime;
    DECLARE @ElaspedTime time;
    DECLARE @hh int;
    DECLARE @mm int;
    DECLARE @ss int;
    Declare @TimeString varchar
    set @StartTime = (Select top 1 [DateTime] From Log WHERE ProfileID = @ProfileID);
    set @hh = DateDiff(hour,@StartTime,@CurrentDateTime);
    set @mm = DateDiff(minute,@StartTime,@CurrentDateTime)-60*@hh;
    set @ss = DateDiff(second,@StartTime,@CurrentDateTime)-60*@mm;

    set @TimeString = (Select CAST(@hh as varchar)); -- Fails Here 
    set @ElaspedTime = convert(datetime, cast(@hh as varchar) + ':' + cast(@mm as varchar) + ':' + cast(@ss as varchar));
    INSERT INTO Log (ElaspedTime) Values (@ElaspedTime);
END
Quel est le message d'erreur?
Quelle est la valeur de @hh au point l'erreur se produit? En aparté, votre logique pour ElapsedTime suggère que vous n'êtes pas en se référant à l'intervalle.
La valeur de @hh = 1. Échec de la Conversion lors de la conversion de la date et/ou le temps de chaîne de caractères.
cast(@hh varchar) n'a pas pu être évalué
Avez-vous essayé de type nvarchar(10) à la place d'un varchar avec une longueur non spécifiée?

OriginalL'auteur Pat | 2013-07-22