请帮助我解决我的问题。因此,我有一个名为“RATES”的表,其中包含以下列:

id (int)
rate (money)
start_time (datetime)
end_time(datetime)

示例数据:
1 150 8:00am 6:00pm
2 200 6:00pm 4:00am
3 250 8:00am 4:00am (the next day)

我要做的是选择所有给定时间将落入的id。

例如,给定时间:9:00 pm,输出应为2,3

问题是我第二天早上8点到凌晨4点之间有这个时间范围,我不知道该怎么办。请帮助!提前致谢

最佳答案

假设@Andriy M是正确的:

  • 数据跨度不超过24小时
  • 如果end_time start_time,则end_time属于第二天
  • 那么您正在寻找的是:
    Declare @GivenTime DateTime
    Set @GivenTime = '9:00 PM'
    Select ID
      From Rates
     Where (Start_Time<End_Time And Start_Time<=@GivenTime And End_Time>=@GivenTime)
        Or (Start_Time=End_Time And Start_Time=@GivenTime)
        Or (Start_Time>End_Time And (Start_Time>=@GivenTime Or End_Time<=@GivenTime))
    

    关于sql - 时间范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5940708/

    10-11 02:53