は誰がどのように人間が読める形式で秒(例えば16742秒)の与えられた数をフォーマットする(例えば1D 5H 2メートルの13S)フォーマットのタイムスパンは、Desktop Intelligenceの(BO Deski)
-
を教えてもらえますオブジェクト
- BOフィールドの式を使用して
または - T-SQL SELECTステートメント(ここで、Durationは秒単位のSUM集計からのものです)を使用していますか?
は誰がどのように人間が読める形式で秒(例えば16742秒)の与えられた数をフォーマットする(例えば1D 5H 2メートルの13S)フォーマットのタイムスパンは、Desktop Intelligenceの(BO Deski)
私は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"
は尋ねるに躊躇いけないしてください。
おかげで、
マット
個人的に私はこれに対して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
おかげで、残念ながらこれはBO DeskiからSELECT文でインラインで使用することはできません。それが単なるものだったら! – Dan
私はBODを使ったことがありません。 BOのCrystal Reportsのようなものですか? CRでは、同様のことをするのはかなり簡単です... BODで使用する際に問題がありますが、カスタムクエリが許可されていませんか? – Brimstedt