代码之家  ›  专栏  ›  技术社区  ›  Sate Wedos

如何从SQLServer中的另一个表中选择时间跨度为的日期时间

  •  0
  • Sate Wedos  · 技术社区  · 6 年前

    我在缺勤表中有数千条缺勤记录,其中包含用户Id和日期时间字段。 enter image description here

    然后我还有一个时间设置表,它有Start\u Time和Finish\u Time字段。 enter image description here

    所以我想显示缺勤表中与时间设置表相对应的所有记录。

    例子:

    {'2021','2018-08-30 07:20:00'},
    {'2021','2018-08-30 12:01:00'},
    {'2021','2018-08-30 13:00:00'},
    {'2021','2018-08-30 16:02:00'},
    

    我只是想表示一下今天的缺席

    3 回复  |  直到 6 年前
        1
  •  0
  •   TomC    6 年前

    你的意思是:

    select Start_Time, Finish_Time, absence.*
    from time_setting ts
    join absence a 
      on a.date_time>=floor(convert(float,getdate()))+convert(datetime,ts.start_time)
      and a.datetime<floor(convert(float,getdate()))+convert(datetime,ts.FinishTime)
    
        2
  •  0
  •   SQL_M    6 年前

    我想你可以用这个:

    SELECT UserID, Date_Time
    FROM Absence AS A
    INNER JOIN Time_Settings AS TS ON CAST (Date_Time AS TIME) >= CAST (Start_Time AS TIME)
                                   AND CAST (Date_Time AS TIME) <= CAST (Finish_Time AS TIME)
    
        3
  •  0
  •   Abdul Rasheed    6 年前

    SELECT  *
    FROM    Absence_Table
        INNER JOIN  Time_Setting ON CONVERT(TIME,Date_Time) BETWEEN Start_Time and Finish_Time