2

ストアド プロシージャの一部として SQL Server 2008 で DATEDIFF() 呼び出しを行っていますが、3 秒以下の小さな値を返す可能性があります。形式を MM:SS (つまり、3 秒の場合は 00:03) にしたいと考えています。私はもともと数分で通話を使用していました:

DATEDIFF(mi, SELECT MAX(startDate) FROM myTable , SELECT MAX(EndDate) FROM myTable)

ただし、これは最も近い分に切り捨てられていたため、秒の値が消去されていました。DATEDIFF を使用して上記で指定した形式を実現するにはどうすればよいですか?

4

1 に答える 1

10

最も近い秒に:

DATEDIFF(ss, SELECT MAX(startDate) FROM myTable, SELECT MAX(EndDate) FROM myTable)

Ref

注:DATEDIFF「フォーマット」は提供されません。整数を返すだけです。したがって、適切にキャスト/フォーマットする必要があります。

私はあなたが簡単に得ることができる最も近いものはCASTフォーマットで使用していると思います108

select convert(char(8), dateadd(ss, DATEDIFF(ss, SELECT MAX(startDate) FROM myTable, 
                                                 SELECT MAX(EndDate) FROM myTable)), 
               cast(0 as DateTime)) , 108)

例えば

select convert(char(8), dateadd(ss, DATEDIFF(ss, '2012-12-16 12:00:00', 
                                                 '2012-12-16 12:13:09'), 
                                cast(0 as DateTime)), 108)

戻り値:

00:13:09

[注:最も近い3秒に丸める場合は、次のように変更できます:TSQL:最も近い15分間隔に丸める]

于 2012-12-17T01:44:17.797 に答える