如果我们输入月份数字或月份名称,甚至日期,是否可以获取SQL Server中一个月的天数?
答案 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))