1

私のクライアントには、この KTV 時間ルールがあり、20 分を超えるすべてのチェックアウトは追加の 1 時間と見なされます。

以下のコード例:

  declare @dateStart as datetime, @dateEnd as datetime

  set @dateStart = cast('3/2/2013 8:00:00 PM' as datetime)
  set @dateEnd   = cast('3/2/2013 9:20:02 pm' as datetime)

  SELECT DATEDIFF(hour, @dateStart, @dateEnd) 

上記のコードは論理的に 1:20 時間を返します。SQL サーバーでは 1 時間を返します。このコードを微調整して 2 時間として返すにはどうすればよいですか?

前もって感謝します。

4

3 に答える 3

5

これを使って:

declare @dateStart as datetime, @dateEnd as datetime

set @dateStart = cast('3/2/2013 8:00:00 PM' as datetime)
set @dateEnd   = cast('3/2/2013 9:20:02 pm' as datetime)

SELECT CEILING(CAST( DATEDIFF(minute, @dateStart, @dateEnd)as float) / 60)

詳細:天井

于 2013-03-12T06:20:21.440 に答える
1

これを試して :

  declare @dateStart as datetime, @dateEnd as datetime

  set @dateStart = cast('3/2/2013 8:00:00 PM' as datetime)
  set @dateEnd   = cast('3/2/2013 9:20:02 pm' as datetime)

  SELECT DATEDIFF(hour, @dateStart, @dateEnd) 
+
case 
when datediff(minute,@dateStart, @dateEnd)%60>=20 then 1
else 0
end

より正確に言うと、ここに秒を追加することもできます。

于 2013-03-12T06:26:48.197 に答える
0

次のように、経過時間に 40 分を追加し、時間単位で切り捨てます。

  declare @dateStart as datetime, @dateEnd as datetime

  set @dateStart = cast('3/2/2013 8:00:00 PM' as datetime)
  set @dateEnd   = cast('3/2/2013 9:20:02 pm' as datetime)


  select Elapsed = datediff(hour, @dateStart, dateadd(minute,40,@dateEnd))

戻り値

Elapsed
-----------
2
于 2013-03-12T06:24:09.057 に答える