2009-03-10 6 views
0

は誰がどのように人間が読める形式で秒(例えば16742秒)の与えられた数をフォーマットする(例えば1D 5H 2メートルの13S)フォーマットのタイムスパンは、Desktop Intelligenceの(BO Deski)

    を教えてもらえますオブジェクト
  • BOフィールドの式を使用して
    または
  • T-SQL SELECTステートメント(ここで、Durationは秒単位のSUM集計からのものです)を使用していますか?

答えて

1

私はDeskiと4つの変数を使用してそれを行っています。 Start of the timeのメジャー、いくつかの変数を作成します。私の変数はvYears、My Month変数はvMonth、my days変数はvDays、そして私のhours変数はvHoursです。

=Floor(Sum(Sum((Sum(<Hours Billed by Date Billed>/24)/365.25)-<vYears>)*365.25/7-<vWeeks>)*52/24) 

vHoursは、以下の計算を使用する:

=Floor(Sum((Sum(<Hours Billed by Date Billed>/24)/365.25)-<vYears>)*365.25/7) 

vDaysは、以下の計算を使用する:

=Floor(Sum(<Hours Billed by Date Billed>/24)/365.25) 

vWeeksは、以下の計算を使用する:

vYearsは、以下の計算を使用し

=Truncate(Sum((Sum(Sum((Sum(<Hours Billed by Date Billed>/24)/365)-<vYears>)*365/7-<vWeeks>)*52/24-<vDays>)*24) , 2) 

私はその後、次の手順で出力これらの変数をすることができます:あなたは、さらに情報が必要な場合

=<vYears>+" Years "+<vWeeks>+" Weeks "+<vDays>+" Days "+<vHours>+" Hours" 

は尋ねるに躊躇いけないしてください。

おかげで、

マット

1

個人的に私はこれに対してTSQL関数を作成します。以下は、あなたが適応できるサンプルです:

IF(OBJECT_ID('FN_STRING_TO_TIME', 'FN') IS NOT NULL) 
    DROP FUNCTION FN_STRING_TO_TIME 
GO 

CREATE FUNCTION dbo.FN_STRING_TO_TIME( 

    -- Seconds to convert 
    @pSeconds INT 
) 
RETURNS VARCHAR(12) 
--------------------------------------------------------------------------------------- 
-- Developer:  Linus Brimstedt 
-- Date:  2009-03-17 
-- 
-- Function:  Returns the given seconds in H:MM:SS format 
--   
-- Output:   String in format H:MM:SS 
--   
--------------------------------------------------------------------------------------- 
BEGIN 

----------------------------- 
-- Variables 
----------------------------- 

    DECLARE @output  VARCHAR(30) -- Describe the variables 

    DECLARE @minutes INT 
    DECLARE @hours  INT 

----------------------------- 
-- Implementation 
----------------------------- 

    SET @minutes = @pSeconds/60 
    SET @pSeconds = @pSeconds % 60 

    SET @hours = @minutes/60 
    SET @minutes = @minutes % 60 

----------------------------- 
-- Return output 
----------------------------- 
    RETURN CAST(@hours AS VARCHAR) + ':' 
    + dbo.FN_STRING_LPAD(@minutes, 2, '0') + ':' 
    + dbo.FN_STRING_LPAD(@pSeconds, 2, '0') 
END 
GO 

-- Test 
DECLARE @seconds INT 
, @got  VARCHAR(12) 
, @expected VARCHAR(12) 

SELECT @seconds = 67 
, @expected = '0:01:07' 
SET @got = dbo.FN_STRING_TO_TIME(@seconds) 

IF(@got != @expected) 
    RAISERROR('FN_STRING_TO_TIME(%d) returned bad value: Expected: %s, got %s', 11, 11, @seconds, @expected, @got) 

SELECT @seconds = 60 * 60 * 7 + 60 * 14 + 34 
, @expected = '7:14:34' 
SET @got = dbo.FN_STRING_TO_TIME(@seconds) 

IF(@got != @expected) 
    RAISERROR('FN_STRING_TO_TIME(%d) returned bad value: Expected: %s, got %s', 11, 11, @seconds, @expected, @got) 

乾杯 /L

+0

おかげで、残念ながらこれはBO DeskiからSELECT文でインラインで使用することはできません。それが単なるものだったら! – Dan

+0

私はBODを使ったことがありません。 BOのCrystal Reportsのようなものですか? CRでは、同様のことをするのはかなり簡単です... BODで使用する際に問題がありますが、カスタムクエリが許可されていませんか? – Brimstedt

関連する問題