0

SQL 2008で、これを行うとエラーが発生するのはなぜですか。

select datediff (minute, '23:30','24:00') 

エラーは次のとおりです。

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

に変更24:0000:00たとしても、なぜ結果はどうなるの-1410でしょうか?

これに使用できる代替手段は何ですか?

4

2 に答える 2

5

「23:30」と「24:00」の違いを探している場合は、技術的には翌日です。

select datediff (minute, '2012-07-10 23:30','2012-07-11 00:00') 

使用する場合:

select datediff (minute, '23:30','00:00') 

'00:00'は同じ日として解釈されているため、。を取得してい-1410ます。1日の合計は1440分で、差として30分を引いたものがあります。DATEDIFF関数は次のとおりです。

DATEDIFF ( datepart , startdate , enddate )

終了日「00:00」が開始日より前の場合は、負の数になります。

編集:

あなたのコメントに基づいて、あなたはあなたのテーブルに以下を使用し、次にそのCASE周りのステートメントを使用endtimeしてそれに日を追加します:

select datediff(minute
                , starttime
                , case 
                when endtime = '00:00' 
                then dateadd(d, 1, endtime)
                else endtime END)
from yourtable

SQL FiddlewithDemoを参照してください

于 2012-07-10T23:16:19.247 に答える
0

23:00から前の00:00までの間に1,410分があるため、結果は-1410になります。

于 2012-07-10T23:17:26.543 に答える