0

你能帮我选择一个特定的下一个月开始的日期吗,例如四月?例如,如果是 Jan 08 2013,应该选择 April 01 2013,如果是 June 08 2013,应该选择 April 01 2014。

谢谢。

4

2 回答 2

1

我会创建一个日历表,然后你可以简单地做这样的事情:

select 
    min([Date])
from 
    dbo.Calendar
where
    MonthNumber = 4 and
    DayNumber = 1 and
    [Date] > getdate()

查询日历表通常比使用日期函数更清晰、更简单、更灵活。您可能还想考虑如果今天是 4 月 1 日会发生什么:您想要今天的日期还是明年的日期?

如果您对 4 月 1 日感兴趣,因为它是一个财政年度的开始,您可以直接将该信息添加到您的日历表中:

select 
    min([Date])
from 
    dbo.Calendar
where
    IsStartOfFinancialYear = 0x1 and
    [Date] > getdate()
于 2013-01-08T16:13:18.747 回答
0

使用DATEADDandDATEPART函数,就像这个简短的例子:

DECLARE @Date Datetime

SET @Date = '2013.01.08 00:00:00'

SELECT DATEADD(year, 
CASE WHEN DATEPART(month, @Date) < 4 
THEN 0 
ELSE 1 END, 
  DATEADD(day, -DATEPART(day, @Date) + 1, 
     DATEADD(month, -DATEPART(month, @Date) + 4, @Date)))
于 2013-01-08T16:12:17.717 回答