2

分を表すint値 (例: ) を次のような値 ( )に変換するにはどうすればよいですか。1800dd:hh:mmdays:hours:minutes

したがって、 ( )1800に変換する必要があります。1:06:001 day 6 hours 0 minutes

ストアドプロシージャでは、これがあります:

SELECT 
    Record_ID, Project_ID, Ticket_ID, WO_Type, DC, Title, Device_Quantity, 
    Total/1440 as Total,  
    ((Total - Elapsed) - DATEDIFF(mi, Record_Time, getdate())) as FinalTimeLeft, 
    Completed 
FROM Record

キャストを SP に実装するにはどうすればよいですか? その上FinalTimeLeft=1800

4

1 に答える 1

5

この例はどうですか - 時間、分、秒を実行しますが、日、時間、分は簡単に変更できるはずです:

SELECT 
  CAST(mins / 3600 AS VARCHAR) + ':' + 
  RIGHT('0' + CAST((mins % 3600) / 60  AS VARCHAR), 2) + ':' +
  RIGHT('0' + CAST(mins % 60 AS VARCHAR), 2)
FROM 
  (SELECT 1800 AS mins) a

編集:日、時間、分を修正したコードを使用してストアドプロシージャを含めました:

SELECT 
  *
  ,CAST(FinalTimeLeft / 1440 AS VARCHAR) + ':' +
     RIGHT('0' + CAST((FinalTimeLeft / 60) % 24 AS VARCHAR), 2) + ':' +
     RIGHT('0' + CAST(FinalTimeLeft % 60 AS VARCHAR), 2) AS duration
FROM ( 
SELECT 
  Record_ID
  ,Project_ID
  ,Ticket_ID
  ,WO_Type
  ,DC
  ,Title
  ,Device_Quantity
  ,Total/1440 as Total
  ,((Total-Elapsed)-DATEDIFF(mi,Record_Time,getdate())) as FinalTimeLeft
  ,Completed
FROM record) a
于 2013-03-12T15:22:43.610 に答える