月问题的最后一天

时间:2011-01-08 21:42:34

标签: sql-server-2005 sql-server-2008

我有以下查询,它通过传递月份名称和年份来给出月份的最后一天,但不知道如何以类似的方式获得第一天。

declare @month int, @year int
select @month=1,@year=2011

select Convert(varchar(20),dateadd(year,@year-1900,dateadd(month,@month,0)-1), 105)

2 个答案:

答案 0 :(得分:0)

我没有SQL Server的经验,但根据你的代码,我猜应该是这样的答案:

declare @month int, @year int
select @month=1,@year=2011

select Convert(varchar(20),dateadd(year,@year-1900,dateadd(month,@month-1,0)), 105)

答案 1 :(得分:0)

将其保留在日期时间域中,查找下个月的第一天,然后减去一天

SELECT
    dateadd(day, -1, dateadd(year, @year-1900, dateadd(month, @month, 0)))

几乎所有CAST或varchar都是非确定性的,不是语言/ @ DATEFORMAT安全