如果 getdate() 已经过了特定时间,则显示一个字符串

Display a string if getdate() has passed a certain time

这就是我所拥有的:

declare @breakend datetime,
        @breakstart datetime
set @breakend = (select Convert(varchar(20),DateAdd(month, 0, convert(varchar(20),getdate(), 102) + Space(1) + '9:00:00 AM'), 120))
set @breakstart = GETDATE()
select CONVERT(VARCHAR(20),DateAdd(SS,Datediff(ss,@breakstart, @breakend)%(60*60*24),0),108) as 'Hours until first break'

我想知道如果时间已过 9:00AM 如何打印类似 'Past Break Time' 的内容?

因此,如果它 8:00AM 它将显示“休息前 1 小时”。 如果9:01AM显示'Past Break Time'

您可以只使用 casebetween。如果我没理解错的话,这是检查约会对象是否在休息时间之间的方法。

declare @breakend datetime,
        @breakstart datetime
set @breakend = getdate() + 1
set @breakstart = GETDATE() - 1
select case when getdate() between @breakstart and @breakend then 1 else 0 end as 'result'

这不是准确的小时数,但也许可行

declare @breakend datetime,
    @breakstart datetime
set @breakend = (select cast(cast(getdate() as date) as varchar) + ' 09:00:00')
set @breakstart = getdate()

select
case 
    when @breakstart < @breakend then cast(datediff(hour,@breakstart,@breakend) as varchar) + ' hours until break'
    else 'Past break time'
end display
DECLARE @breakend datetime,
        @breakstart datetime
SET @breakend = (select Convert(varchar(20),DateAdd(month, 0, convert(varchar(20),getdate(), 102) + Space(1) + '09:00:00 AM'), 120))
SET @breakstart = GETDATE()

SELECT
    CASE WHEN @breakstart < @breakend THEN CAST(DATEDIFF(MINUTE,@breakstart,@breakend) as varchar(10)) + ' minutes left on break'
            ELSE 'Past Break Time' END AS Value