SQL获取第15个日期的第一次出现

use*_*448 6 sql sql-server sql-server-2005 sql-server-2008

我需要编写一个函数或SP,它将返回第15次出现的第一次出现.例如,如果我将日期传递给5月8日,那么它应该返回5月15日.如果我通过5月30日,那么它应该在6月15日返回.

SQL*_*ace 5

单程

   DECLARE @d DATETIME
    SELECT @d = '20110508'
    --SELECT @d = '20110530'


    SELECT  CASE WHEN DAY(@d)  > 15 
    THEN  dateadd(mm, datediff(mm, 0, @d)+1, 0) + 14
    ELSE dateadd(mm, datediff(mm, 0, @d)+0, 0)+ 14 end
Run Code Online (Sandbox Code Playgroud)


Rob*_*Rob 0

尝试

DATEADD(Day, DATEDIFF(Day, 15, Created), 0) AS CreatedDay 
Run Code Online (Sandbox Code Playgroud)

这里解释http://improve.dk/archive/2006/12/13/sql-server-datetime-rounding-made-easy.aspx

使用该链接您可以实现您想要的

更新:弄错了......参见民主党的回答