4

私は 1 つのテーブルの 2 つの列をデータ型として持ってい@ABC as DateTimeます@xyz as DateTime

私は時間だけを差し引きたいのですが、私はこのようにしようとしています:

ABC = 21/02/2012 6:10:00 PMおよびXYZ = 01/01/2001 12:00:00 AM-> 1 行目。

CONVERT(varchar(10), dbo.checkingtime.ABC – dbo.checkingtime.XYZ, 108)

として結果を取得していますが、時間と分のみ18:10の結果が必要です。05:50

出来ますか ?? ?

4

4 に答える 4

1

これはあなたが望むものです。これは組み込み関数ですが、独自に構築することをお勧めします。

DATEDIFF ( datepart , startdate , enddate )

必要な結果を得るには、開始日と終了日を同じ日に「マスク」する必要があることに注意してください(それは時差です)。結果は分単位になりますが、時間:分に簡単にフォーマットできます。

乾杯

于 2013-01-02T08:19:37.920 に答える
0

次のような関数を試すことができます。

CREATE FUNCTION GetTimeDifference
(
@FirstDate datetime,
@SecondDate datetime
)
RETURNS varchar(10)
AS
BEGIN
DECLARE @Difference INT
DECLARE @FirstTimeInMin INT
DECLARE @SecondTimeInMin INT

SELECT @FirstTimeInMin = 
(DATEPART(hour,@FirstDate) * 60 + DATEPART(minute,@FirstDate))
SELECT @SecondTimeInMin =
(DATEPART(hour,@SecondDate) * 60 + DATEPART(minute,@SecondDate))

IF @FirstTimeInMin = 0
SET @FirstTimeInMin = 24 * 60

IF @SecondTimeInMin = 0
SET @SecondTimeInMin = 24 * 60

SET @Difference = @FirstTimeInMin - @SecondTimeInMin

IF(@Difference < 0)
SET @Difference = @Difference * -1

RETURN RIGHT('0' + CONVERT(varchar(10), @Difference / 60), 2)
 + ':' + 
RIGHT('0' + CONVERT(varchar(10), @Difference - (@Difference / 60) * 60 ), 2)

END
GO

そして、次のように使用できます。

SELECT dbo.GetTimeDifference('02/02/2012 6:10:00 PM','01/01/2001 12:00:00 AM')

結果は 05:50 になるはずです

于 2013-01-02T09:22:28.857 に答える
0

これが私が見つけた良い例です:

Select start_date, end_date, time_diff,
   EXTRACT(DAY FROM time_diff) days,
   EXTRACT(HOUR FROM time_diff) hours,
   EXTRACT(MINUTE FROM time_diff) minutes,
   EXTRACT(SECOND FROM time_diff) seconds
From
(
Select start_date, end_date, end_date - start_date time_diff
From
(
Select CAST(to_date('21/02/2012 06:10:00 am', 'dd/mm/yyyy  hh:mi:ss am') AS TIMESTAMP)  end_date
 , CAST(to_date('01/01/2012 12:00:00 am', 'dd/mm/yyyy  hh:mi:ss am') AS TIMESTAMP) start_date
From dual
))
/
于 2013-01-02T20:50:01.693 に答える
0

これで十分です。

select right(date2-date1,7) as time from table1

結果:

TIME
5:50AM

SQL_LIVE_DEMO

于 2013-01-02T11:36:35.923 に答える