1

如果当前日期的天数 = 14,则参数的值需要更改。月份和可能的年份需要提前 1 - 可能需要考虑到该月的第 14 天可能存在阻止此过程运行的技术问题。示例星期五是 14 日,当 sql 脚本在 sql 服务器上运行并看到它的第 14 日时,字段 prmstring 需要从 201305 更新为 201306。

4

3 回答 3

1
SET @start = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()-13), 0)
SET @stop  = DATEADD(MONTH, 1, @start)

-13所有内容移回 13 天。
- 每月 1 日至 13 日,移至上个月的日期
- 每月 14 日起,留在同月

DATEADD(DATEDIFF())日期向下舍入到月初。

这样每个月的 1 号到 13 号都向下舍入到上个月的 1 号。14 日起向下舍入到当月 1 日。

结束日期就是上面计算的值加上 1 个月。

于 2013-06-11T18:16:31.053 回答
0

这个怎么样?

select  
    substring(
        convert(
            varchar(10),
            dateadd(mm, 1, dateadd(mm, datediff(mm, 0, dateadd(d,-13,getdate())), 0))
            ,112)
    ,1,6) as newDate
于 2013-06-11T19:34:32.643 回答
0

这是有效的

  DECLARE @curentday VARCHAR(2)
  select @curentday =datepart(day,getdate())  

  declare @yearmonth varchar (6)
  select  @yearmonth =convert(varchar,getdate(),112)

  If  @curentday in (14,15,16) 
  begin 
  if (select prmString11 from FC_App where prmName1='prmCurFCPrd')  <> @yearmonth
  begin
  update FC_App 
  set prmString11 = @yearmonth 
  where prmName1='prmCurFCPrd'
  update FC_App 
  set prmString11 = CONVERT(VARCHAR(6),DATEADD(dd,1-day((DATEADD(mm,-1,GETDATE()))),DATEADD(mm,-      1,GETDATE())),112)
  where prmName1='prmcurWIPPrd'
  End
  end
于 2013-06-13T16:52:27.130 回答