如何选择具有从SQL Server中的另一个表获取的时间跨度的日期时间

时间:2018-08-30 04:22:12

标签: sql-server datetime

我的缺席表中有数千个缺席记录,其中包含User_Id和Date_Time字段。 mathematical operation

然后我还有Time_Setting表,其中包含Start_Time和Finish_Time字段。 enter image description here

如何从缺席时间表中选择所有时间跨度的缺席日期时间表? 所以我想显示与Time_Setting表相对应的缺席表中的所有记录。

示例:

{'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 个答案:

答案 0 :(得分:0)

您的意思是:

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)

答案 1 :(得分:0)

我认为这是您可以使用的:

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)

答案 2 :(得分:0)

这将返回缺勤表中的Date_Time,所有时间跨度都取自Time_Setting表

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