Tsql SQL Server明年的第一天?

Tsql SQL Server明年的第一天?,tsql,sql-server-2000,Tsql,Sql Server 2000,这不应该这么难。我只需要以下几点: SET @DueDate = CONVERT (DATETIME, '01/01/2010') 然而,我需要它的实用性,以便如果它是2010年3月,给出的日期将是“2011年1月1日” 我知道这很简单,但我的大脑没有想到。我确信它带有DateAdd和getdate() 从现在到零减一年(1899年12月31日)之间的年边界数,再加上 SELECT DATEADD(year, DATEDIFF(year, -1, GETDATE()), 0) 让我们试着明年

这不应该这么难。我只需要以下几点:

SET @DueDate = CONVERT (DATETIME, '01/01/2010')
然而,我需要它的实用性,以便如果它是2010年3月,给出的日期将是“2011年1月1日”


我知道这很简单,但我的大脑没有想到。我确信它带有DateAdd和
getdate()

从现在到零减一年(1899年12月31日)之间的年边界数,再加上

SELECT DATEADD(year, DATEDIFF(year, -1, GETDATE()), 0)
让我们试着明年的某个日期到2011年。因为2010年1月1日是2009年下一年的开始

SELECT DATEADD(year, DATEDIFF(year, -1, '2010-03-21'), 0)

也许,可以创建一个包含一年中第一个日期的表,然后选择比日期大的最小日期


也许简单地把一个字符串组合在一起,“01/01”+(MyYear+1)?

基于数据库杂志文章:

次年第一天

我使用年间隔(yy)来显示下一年的第一天

选择DATEADD(yy,DATEDIFF(yy,-1,getdate()),0)


您可以在当前年份中添加一个,然后在1月1日进行concat,然后转换回日期:

select CONVERT(datetime, CONVERT(VARCHAR(20), YEAR(GETDATE())+1) + '.01.01')

顺便提一下,使用SQL 2012,您可以执行
DATEFROMPARTS(YEAR(@date)+1,1,1)
。在您的例子中,
DATEFROMPARTS(YEAR(GETDATE())+1,1,1)


帽子提示

使用上述示例的某些部分,您也可以这样做。现在,假设您可接受的日期格式与M-d-yyyy匹配

DATEADD(year, 1,'1-1-'+convert(varchar,DATEPART(YYYY,GetDate())))

注意:获取当前日期,获取年份部分,创建一个转换为日期的字符串,然后将其添加到年份中。

实际上,该字符串返回“1/2/2010”。:)谢谢,但这不应该是:选择DATEADD(yy,DATEDIFF(yy,-1,getdate()),0)与上面相同,用于明年吗?是的。据报道,这是今年的第一天。我会改变的。