Sql 从datetime之间选择多个数据库表
我想在我的网站上从datepicker选择的日期范围内选择一个数据库表,我的示例数据库表名称为: 2016年2月11日输出 2016年2月13日输出 2016年2月15日输出 2016年2月21日的输出 我想在我的网站上选择要显示和显示其内容的表格,以下是我在研究中了解的当前代码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
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