0

次のクエリで現在のシステム時刻を取得しています

select cast(DATEPART(hh,getdate()) as varchar)+ ':'+ cast(DATEPART(n,getdate()) as varchar)

では、この現在のシステム時刻を時間フィールドと比較して、どちらが大きいかを確認するにはどうすればよいですか?

 -----------------------
 declare    @time1  datetime,
            @time2  datetime

 select  @time1 = '20060701 02:27:35.35',
         @time2 = getdate()

 select tm1, tm2,
        case    
         when tm1 = tm2 then 'tm1 = tm2' 
         when tm1 > tm2 then 'tm1 > tm2'
    else        'tm1 < tm2'
    end as [TimeDiff]
 from
 (
     select dateadd(day, -datediff(day, 0, @time1), @time1) as tm1,
            dateadd(day, -datediff(day, 0, @time2), @time2) as tm2
 ) t

 -----------------------

時間フィールドには、次の形式の時間があります

     0400
     0415
     0430

このサポート関数が表示されます。@time1の部分を「テーブルから時間を選択」に変更するにはどうすればよいですか。

ありがとう

4

5 に答える 5

1

これを試して:

select case when cast(cast(DATEPART(hh,getdate()) as varchar)+ ':'+ cast(DATEPART(n,getdate()) as varchar) as datetime) >
       cast(left('0415',2)+':'+right('0415',2) as datetime) then 'greter' else 'lesser'
       end
于 2012-11-23T12:06:46.027 に答える
1

@time1 をテーブル列に置き換えたいだけの場合。その場合は、どうぞ、

declare    @time2  datetime

CREATE Table #temp
(
time1 varchar(100)

)
Insert into #temp 
 select '20060701 02:27:35.35'

Insert into #temp 
 select '20060701 12:27:35.35'

 Insert into #temp 
 select '20060701 22:27:35.35'

 Select   @time2 = getdate()

 select tm1, tm2,
        case    
         when tm1 = tm2 then 'tm1 = tm2' 
         when tm1 > tm2 then 'tm1 > tm2'
         else        'tm1 < tm2'
        end as [TimeDiff]
 from
 (
     select dateadd(day, -datediff(day, 0, time1), time1) as tm1,
            dateadd(day, -datediff(day, 0, @time2), @time2) as tm2

        FROM #temp
 ) t
于 2012-11-23T12:38:01.437 に答える
0

あなたはこのような時間を得ることができます:

select replace(cast(cast(getdate() as time) as varchar(5)), ':', '')

時刻から最初の5文字を​​取得してから、:を削除します。

于 2012-11-23T12:09:07.007 に答える
0

その形式で時間を取得するには

select REPLACE( CONVERT(VARCHAR(5),CURRENT_TIMESTAMP,108), ':', '')
于 2012-11-23T14:15:15.680 に答える
0
Declare @time varchar(10)
SET @time='0400'
select CASE when convert(datetime,left(@time,2)+':'+RIGHT(@time,2))>convert(datetime,cast(DATEPART(hh,getdate()) as varchar)+ ':'+ cast(DATEPART(n,getdate()) as varchar)) then '1' else '0' end
于 2012-11-23T12:02:39.120 に答える