3

我正在使用存储过程,并且我有一个列名称 timespent,我只想显示为 HH:MM 格式,该过程工作正常,但唯一的问题是当前花费的时间是 hh:mm:ss 格式. 指导我如何以 HH: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 Production.UserID=@userID and CalendarDate >= @TODAY              
End 
4

2 回答 2

12

尝试这个

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

将 getdate() 替换为您的列名。

于 2012-06-23T08:11:10.653 回答
5

我试过了,它奏效了

declare @dt datetime
    set @dt = '07:30'
    select convert(varchar(5),@dt,108)
于 2012-06-23T08:15:23.913 回答