函数在sql中获取月份的最后一天

时间:2016-06-27 02:17:22

标签: sql sql-server

我需要输入月份和年份的最后一天。例如,输入06/2016它将返回30.我使用SQL Server 2005.感谢您的帮助。

4 个答案:

答案 0 :(得分:0)

你会做这样的事情:

select eomonth(getdate(), 0);

如果您希望将其格式化为MM / YYYY,那么您可以这样做:

select format(eomonth(getdate(), 0), 'MM/yyyy');

答案 1 :(得分:0)

假设您的输入为innodb_strict_mode = 0 ,形式为VARCHAR

使用MM/YYYYRIGHT分别获取年份和月份。然后使用LEFT生成开始日期。接下来,使用DATEFROMPARTS来获取该月的最后一天。最后使用EOMONTH提取日期部分。

DAY

以上内容仅适用于SQL Server 2012 +。

对于SQL Server 2005,您可以使用DECLARE @input VARCHAR(7) = '06/2016' SELECT DAY( EOMONTH( DATEFROMPARTS(CAST(RIGHT(@input,4) AS INT),CAST(LEFT(@input, 2) AS INT),1) ) ) 生成日期:

DATEADD

参考:

答案 2 :(得分:0)

请原谅我抛出一个不是特定于" SQL Server的响应,"从那以后到2005年,"但是概括计算你所寻求答案的方法如下:

  1. 细分您拥有的输入,例如06/2016分为两部分。致电' em @MONTH@YEAR。定义第三个值@DAY,等于 1
  2. 将此类型转换为日期值..." 2016年6月1日。"
  3. 现在,使用您确定的日期处理功能,"首先添加一个月,然后减去一天。"
  4. 有一件事你必须 非常 在设计这样的代码时要小心(!)你的解码代码06/2016适用于实际发生在该数据库中的每个(!)值,可以依赖失败。

答案 3 :(得分:0)

试试这个,

declare @input varchar(20)='06/2016'
set @input=@input+'/01'
declare @dtinput datetime=@input


select  dateadd(day,-1,dateadd(month,datediff(month,0,@dtinput)+1,0))
--OR in sql server 2012
select eomonth(@dtinput)