2012-06-23 56 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 –

相关问题