1

Excelの組み込みの日付形式[h]の翻訳があります:mm:ssT-SQLまたは任意のSQLプラットフォームで?

例:

    General [h]:mm:ss   [mm]:ss     [ss]
   1.00000  24:00:00    1440:00         86400
   1.00000  24:00:00    1440:00         86400

   2.00000  48:00:00    2880:00         172800

T-SQLの場合は、

Without century (yy) (1)    With century (yyyy) Standard    Input/Output (3)
  14                             114                   -    hh:mi:ss:mmm(24h)

または、デフォルトで108、私は hh:mi:ss:mmm+ 24h)を実行できる関数を再作成する必要があるかどうかを見極めていますか?

コメントは大歓迎です。

4

1 に答える 1

3

SQL Server のデータ型はCLR の timespan データ型timeにマップされるはずですが、24 時間未満の間隔のみをサポートします。

SQL Serverは、2 つの日時の間で交差する日付部分の境界をdatediff計算するため、間隔の計算に関しても注意が必要です。たとえば、これは 1 秒の間隔である必要がありますが、時間を尋ねると、datediff は 1 時間であると教えてくれます。

select datediff(hh, '2013-01-01T23:59:59', '2013-01-02T00:00:00')
-- Returns 1

そのため、これに関しては独自の機能をロールバックする必要があるかもしれませんが、うまくいけば、この答えがあなたを始めるかもしれません:

-- Setup test data
declare @minDate datetime = '2012-12-12 20:16:47.160'
declare @maxDate datetime = '2012-12-17 15:10:12.050'

-- Get timespan in hh:mi:ss
select cast(
        (cast(cast(@maxDate as float) - cast(@minDate as float) as int) * 24) /* hours over 24 */
        + datepart(hh, @maxDate - @minDate) /* hours */
        as varchar(10))
    + ':' + right('0' + cast(datepart(mi, @maxDate - @minDate) as varchar(2)), 2) /* minutes */
    + ':' + right('0' + cast(datepart(ss, @maxDate - @minDate) as varchar(2)), 2) /* seconds */

-- Returns 114:53:24
于 2013-02-06T22:31:27.970 に答える