Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 如何根据Dayname和Mindate获取递增日期_Sql_Sql Server - Fatal编程技术网

Sql 如何根据Dayname和Mindate获取递增日期

Sql 如何根据Dayname和Mindate获取递增日期,sql,sql-server,Sql,Sql Server,我的表是这样的。如何从最短日期开始根据日期名称实现此表 select DATENAME(DW,'06/24/2015') 创建以下函数 Declare @t table (Dated VARCHAR(20),Dayname VARCHAR(10)) INSERT INTO @t (Dated,Dayname)values ('06/17/2015','Wednesday'), ('06/17/2015','Friday'), ('06/17/2015','Monday'), ('06/17/2

我的表是这样的。如何从最短日期开始根据日期名称实现此表

select DATENAME(DW,'06/24/2015')

创建以下函数

Declare @t table (Dated VARCHAR(20),Dayname VARCHAR(10))
INSERT INTO @t (Dated,Dayname)values ('06/17/2015','Wednesday'),
('06/17/2015','Friday'),
('06/17/2015','Monday'),
('06/17/2015','Wednesday')
select * from @t

Required Output : 
Dated   Dayname
06/17/2015  Wednesday
06/19/2015  Friday
06/22/2015  Monday
06/24/2015  Wednesday
现在在您的查询中使用它来获取所讨论日期的整数值,并使用
DATEADD
函数相应地递增使用此代码:(如果您只需要一周中的星期一、星期五和星期五)

输出:

Exec Insert_date '06/17/2015','06/24/2015'

增量是多少?在您的示例中,您需要周三、周五、周一等。生成递增日期的逻辑是什么?最长日期是什么?请注明增量发生的“开始日期”和“结束日期”?然后将上周三作为最长日期“2015年6月24日”@KiranHegde@KavinChakaravarthi将2015年6月17日作为最小日期,上周三表示将“2015年6月24日”作为MaxdateDate作为varchar()完全不是一个好做法。。考虑把它改成DATECAN,你把T-SQL查询的东西放到我的输出来实现你所要的输出,我需要你表格中的相关数据。日期值都相同,但日期不同。
 Create proc Insert_date(
    @startdate date, 
    @enddate date 
    )

    as begin 
    set nocount on

    declare @date date
    declare @day varchar(15)
    declare @n int
    declare @count int

    create table #tab(Dated date,Dayname VARCHAR(10))


    Set @n=0
    select @count=DATEDIFF(dd,@startdate,@enddate)+1

    While(@n<=@count)
     Begin
     select @date=DATEADD(day,@n,@startdate)
     select @day=DATENAME(DW,@date)

     if DATENAME(DW,@date) in('Wednesday','Friday','Monday')
    begin
     INSERT INTO #tab (Dated,Dayname)
     select @date,@day
    end


     select @n=@n+1

    end

   set nocount off
    end
Exec Insert_date '06/17/2015','06/24/2015'
Dated        Dayname
2015-06-17  Wednesday
2015-06-19  Friday
2015-06-22  Monday
2015-06-24  Wednesday