如何在SQL Server中获得一个月中的天数

时间:2018-08-09 12:14:19

标签: sql sql-server

如果我们输入月份数字或月份名称,甚至日期,是否可以获取SQL Server中一个月的天数?

6 个答案:

答案 0 :(得分:8)

如果您有约会,那么只需:

select day(eomonth(date))

如果您有月份号,则:

select day(eomonth(datefromparts(2020, month_number, 1)))

答案 1 :(得分:6)

您可以使用:

select day(eomonth ('2018-02-01')) as NoOfDays

结果将是:

NoOfDays
-----------
28

答案 2 :(得分:4)

如果您有约会并且在2012年或以后:

SELECT day(eomonth(yourdate))

在处理2月时,月份名称/数字会自动出现错误-您认为是28还是29,计算时指的是哪一年。

答案 3 :(得分:3)

尝试使用

SELECT day(eomonth(yourdate))

答案 4 :(得分:3)

如果您使用的是sql-server 2008或更早版本:

日期作为输入

DECLARE @date DATETIME = getdate()

SELECT day(dateadd(m, datediff(m, -1, @date), -1))

月份和年份作为输入

DECLARE @year  INT = 2018
DECLARE @month INT = 2

SELECT day(dateadd(m, @month + datediff(m, 0, cast(@year as char(4))), -1))

答案 5 :(得分:2)

对于2012年之前的eomonth()不可用

如果有约会

select  day(dateadd(month, datediff(month, 0, @date) + 1, -1))

如果您有年份和月份

declare @year   int = 2018,
        @month  int = 8
select  dateadd(month, @month, dateadd(year, @year - 1900, -1))