【发布时间】:2015-08-03 06:22:03
【问题描述】:
我想在 SQL Server 2008 Management Studio 中计算一年中的天数。
例如:
- 2016 年:366
- 2014 年:365
【问题讨论】:
标签: sql-server-2008
我想在 SQL Server 2008 Management Studio 中计算一年中的天数。
例如:
【问题讨论】:
标签: sql-server-2008
你可以试试:
declare @y int;
set @y = 2014;
SELECT DATEDIFF(day, cast(@y as char(4)), cast(@y+1 as char(4))) Days
结果:
Days
365
2版本由评论:
declare @y int;
set @y = 2014;
SELECT DATEDIFF(day, cast(cast(@y as char(4)) as date), cast(cast(@y+1 as char(4)) as date)) DaysCnt
【讨论】:
试试这个...
create function fn(@year varchar(20))
returns int
as
begin
declare @a int
select @a =DATEPART(dy,@year +'1231')
return @a
end
select dbo.fn('2014')--365
select dbo.fn('2016')--366
【讨论】:
这也有效:
begin
declare @y int
set @y=2014
select datepart(dayofyear,dateadd(day,-1,'1/1/'+convert(char(4),@y+1)))
end
我得到下一年的第一天,减去一天得到当年的最后一天,然后从中得到一年中的一天。
【讨论】:
对于 SQL 2012 及更高版本:
DECLARE @FromDateYear INT = YEAR(GETDATE());
SELECT DATEDIFF(DAY, DATEFROMPARTS(YEAR(@FromDateYear),1,1), DATEFROMPARTS(YEAR(@FromDateYear) + 1,1,1))
您可以简单地将 YEAR(GETDATE()) 替换为您的年份值。
所有这一切都是在计算从今年 1 月 1 日到明年 1 月 1 日的天数。这将包括 2 月 29 日(如果它存在于当年)。
【讨论】: