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