使用Sql查找位置

使用Sql查找位置,sql,sql-server,tsql,date-range,Sql,Sql Server,Tsql,Date Range,我有一个包含多行的表格,详细说明了特定地点在不同日期的开放时间。给定一个特定的日期时间,我如何编写函数来查找此时打开的位置的名称和地址 注意:行中的时间之间没有重叠,因此任何给定时间只能有一个位置 CREATE TABLE [dbo].[tbl_biz_locations]( [placeid] [int] [placename] [nvarchar](20) NULL, [place_street] [nvarchar](30) NULL, [place_ci

我有一个包含多行的表格,详细说明了特定地点在不同日期的开放时间。给定一个特定的日期时间,我如何编写函数来查找此时打开的位置的名称和地址

注意:行中的时间之间没有重叠,因此任何给定时间只能有一个位置

CREATE TABLE [dbo].[tbl_biz_locations](
    [placeid] [int] 
    [placename] [nvarchar](20) NULL,
    [place_street] [nvarchar](30) NULL,
    [place_city] [nvarchar](30) NULL,
    [sunfrom] [time](7) NULL,
    [sunto] [time](7) NULL,
    [monfrom] [time](7) NULL,
    [monto] [time](7) NULL,
    [tuefrom] [time](7) NULL,
    [tueto] [time](7) NULL,
    [wedfrom] [time](7) NULL,
    [wedto] [time](7) NULL,
    [thufrom] [time](7) NULL,
    [thuto] [time](7) NULL,
    [frifrom] [time](7) NULL,
    [frito] [time](7) NULL,
    [satfrom] [time](7) NULL,
    [satto] [time](7) NULL,


 CONSTRAINT [PK_tbl_places] PRIMARY KEY CLUSTERED 
(
    [placeid] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

假设您知道这一天是星期一,并且在@date变量中捕获了日期

if datename(dw,getdate()) = 'Monday' 
begin
 select placename from [dbo].[tbl_biz_locations] and CONVERT(TIME, @date) between monform and monto
end

对此外,我忘了提到行中的时间之间没有重叠,因此任何给定时间只能有一个位置问题假设我们不知道一周中的哪一天,请给出日期时间,我们需要找到正确的行和正确的字段进行检查