27

次のクエリがあります。

select CONVERT(varchar(12), DATEADD(MILLISECOND, DateDiff(MILLISECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)

これを実行すると、次のエラーが表示されます。

クエリを次のように変更すると、正常に動作します。

select CONVERT(varchar(12), DATEADD(SECOND, DateDiff(SECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)

問題は、MILLISECONDS も本当に必要だということです。

4

7 に答える 7

40

少し後の応答ですが、役立つ場合があります。SQL 2016 では、MS は関数 DATEDIFF_BIG を導入しました。これは、(型のサイズに応じて) 29 万年よりも大きな差でオーバーフローします。しかし、technet の記事には基本的な DATEDIFF と同じ時間差があります - https://msdn.microsoft.com/en-us/library/mt628058.aspx

于 2016-04-14T10:03:00.940 に答える
5

計算でミリ秒を参照する必要はありません。

これは、オーバーフローを除いて、スクリプトとまったく同じです。

SELECT CONVERT(varchar(12), 
        CAST('2014-11-04 08:21:17.723' as datetime) - 
        CAST('2014-08-04 10:37:28.713' as datetime)
       , 114)
于 2014-11-04T08:26:33.753 に答える