Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从datetime之间选择多个数据库表_Sql_Sql Server 2008 - Fatal编程技术网

Sql 从datetime之间选择多个数据库表

Sql 从datetime之间选择多个数据库表,sql,sql-server-2008,Sql,Sql Server 2008,我想在我的网站上从datepicker选择的日期范围内选择一个数据库表,我的示例数据库表名称为: 2016年2月11日输出 2016年2月13日输出 2016年2月15日输出 2016年2月21日的输出 我想在我的网站上选择要显示和显示其内容的表格,以下是我在研究中了解的当前代码 ALTER PROCEDURE [dbo].[gen048_mLIST] -- Add the parameters for the stored procedure here @gfromDate varcha

我想在我的网站上从datepicker选择的日期范围内选择一个数据库表,我的示例数据库表名称为:

2016年2月11日输出 2016年2月13日输出 2016年2月15日输出 2016年2月21日的输出 我想在我的网站上选择要显示和显示其内容的表格,以下是我在研究中了解的当前代码

ALTER PROCEDURE [dbo].[gen048_mLIST] 
-- Add the parameters for the stored procedure here


@gfromDate varchar(10),
@gtoDate varchar(10)


AS

SET NOCOUNT ON

declare @sql varchar(5000)

set @sql='select * output_'


if(@gfromDate<>'' and @gtoDate<>'')
begin
    set @sql=@sql+'between '+convert(datetime,'''+@gfromDate+''')+' and '+convert(datetime,'''+@gtoDate+''')+' '


--print @sql
exec(@sql)

-- [dbo].[gen048_mLIST] '2-16-2016','2-18-2016'

END

很抱歉我的代码和解释混乱,我感谢那些能帮我解决问题的人。

您必须从多个表中选择行,合并它并在应用程序中显示它。我使用硬编码日期生成SQL,但您可以修改/扩展它以满足您的要求

declare @gfromDate varchar(10) = '11/02/2016'
declare @gtoDate varchar(10) = '24/02/2016'
declare @fromDate datetime
declare @toDate datetime
declare @totaldays int

set @fromDate  = (select convert (date, @gfromDate, 104))
set @toDate  = (select convert (date, @gtoDate, 104))

-- get total number of days between from and to dates
set @totaldays = (select datediff(day,@fromdate,@toDate))

declare @sql varchar(max) = ''
declare @tablename varchar(20)
declare @counter int = 1

-- generate the sql to get data from the tables within a date range
while @counter < @totaldays
begin
    set @tablename = (select convert(varchar(11), @fromDate, 106))
    set @tablename = replace(@tablename,' ','')

    -- check if table exists
    --if object_id(@tablename, 'U') is not null
    --begin
    set @sql = @sql + 'select * from output_' +  @tablename 
    if(@counter < @totaldays-1)
    begin
        set @sql = @sql + ' union '
    end
    set @fromDate = dateadd(day,1,@fromDate)
    set @counter = @counter + 1
    --end
end
print @sql

您必须从多个表中选择行,将其合并并显示在应用程序中。我已使用硬编码日期生成SQL,但您可以修改/扩展它以满足您的要求

declare @gfromDate varchar(10) = '11/02/2016'
declare @gtoDate varchar(10) = '24/02/2016'
declare @fromDate datetime
declare @toDate datetime
declare @totaldays int

set @fromDate  = (select convert (date, @gfromDate, 104))
set @toDate  = (select convert (date, @gtoDate, 104))

-- get total number of days between from and to dates
set @totaldays = (select datediff(day,@fromdate,@toDate))

declare @sql varchar(max) = ''
declare @tablename varchar(20)
declare @counter int = 1

-- generate the sql to get data from the tables within a date range
while @counter < @totaldays
begin
    set @tablename = (select convert(varchar(11), @fromDate, 106))
    set @tablename = replace(@tablename,' ','')

    -- check if table exists
    --if object_id(@tablename, 'U') is not null
    --begin
    set @sql = @sql + 'select * from output_' +  @tablename 
    if(@counter < @totaldays-1)
    begin
        set @sql = @sql + ' union '
    end
    set @fromDate = dateadd(day,1,@fromDate)
    set @counter = @counter + 1
    --end
end
print @sql