2012-06-23 40 views
0

我使用存儲過程,並在那裏有一個列名稱超時,我想只顯示像HH:MM格式,該過程工作正常,但唯一的問題是,目前的時間花費的時間是hh:mm:ss格式。指導我如何將時間花在HH:MM格式上,並儘可能糾正我的程序。 的程序是這樣的: -HH:在SQL Server中的MM格式

CREATE procedure St_Proc_GetUserReportforCurrentDayTask    
@userID int    
as    
Begin    
    set NoCount on;    
    DECLARE @TODAY DATE     
    SET @TODAY = CONVERT(VARCHAR(10), GETDATE(), 111)    
    select CONVERT(VARCHAR,production.CalendarDate,101) + RIGHT (CONVERT(VARCHAR,production.CalendarDate , 100) ,7) as Date,    
    RegionAndProjectInfo.RegionProjectName as Region ,    
    County.CountyName as County,    
    WorkType.WorkTypeName as WorkType,    
    Task.TaskName as Task, 
    Production.VolumeProcessed as 'Volumes Processed',    
    Production.TimeSpent as 'Duration (HH:MM)'    
    from Production    
    inner join RegionAndProjectInfo    
    on    
    RegionAndProjectInfo.RegionProjectID=Production.RegionProjectID    
    inner join County    
    on    
    County.CountyID=Production.CountyID    
    inner join WorkType    
    on    
    WorkType.WorkTypeID=Production.WorkTypeID    
    inner join Task    
    on    
    Task.TaskID=Production.TaskID    
    where [email protected] and CalendarDate >= @TODAY    
End 

回答

4

試試這個

select SUBSTRING(convert(varchar, getdate(),108),1,5) 

更換GETDATE()與列名。

+2

[請不要使用'不長varchar'(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad -habits到開球聲明,VARCHAR,而無需-length.aspx)。並且不會'CONVERT(CHAR(5),GETDATE(),108)'更簡單嗎? –

3

我想這和它的工作

declare @dt datetime 
    set @dt = '07:30' 
    select convert(varchar(5),@dt,108) 
+0

嗯,好... +1 – yogi

+2

只是一個尼特,但並不真正需要'varchar'呢?它永遠不會返回任何東西,但5個字符... –

+0

@ Aaron-嗨,你說得對,好評!+1 –

相關問題