我需要输入月份和年份的最后一天。例如,输入06/2016它将返回30.我使用SQL Server 2005.感谢您的帮助。
答案 0 :(得分:0)
你会做这样的事情:
select eomonth(getdate(), 0);
如果您希望将其格式化为MM / YYYY,那么您可以这样做:
select format(eomonth(getdate(), 0), 'MM/yyyy');
答案 1 :(得分:0)
假设您的输入为innodb_strict_mode = 0
,形式为VARCHAR
。
使用MM/YYYY
和RIGHT
分别获取年份和月份。然后使用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年,"但是概括计算你所寻求答案的方法如下:
06/2016
分为两部分。致电' em @MONTH
和@YEAR
。定义第三个值@DAY
,等于 1 。有一件事你必须 非常 在设计这样的代码时要小心(!)你的解码代码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)