SQL server如何获取给定月的倒数数第二天
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL server如何获取给定月的倒数数第二天相关的知识,希望对你有一定的参考价值。
假设给的是3月,那查询出来的结果是3月30号,如果是4月,那查询出来的是4月29号,请问SQL语句怎么写
--获取当前月的倒数第二天SELECT DATEADD(DD,-DAY(DATEADD(M,1,GETDATE()))-1,DATEADD(M,1,GETDATE()))
--这个算法其实就是利用DATEADD函数获取指定日期在指定月的第n天,然后添加一个月时间到下个月的第n天,然后倒退n天获取指定月的最后一天,再减1就是倒数第二天
--你可以将其中GETDATE()换成你的指定日期 参考技术A --给定任意一个日期
Declare @d datetime='2015-04-03'
Select Dateadd(DAY,-DAY(@D)-1, Dateadd(Month,1,@d)) 参考技术B
取本月的第1天:用字符串组装
再加上1个月:DateAdd(m, 1, @date)
再减去2天:DateAdd(d, -2, @date)
--------------------
DECLARE @m int,@date DateTime
SET @m = 3
SET @date = CAST('2015-' + CAST(@m AS VarChar(2)) + '-01' AS DateTime)
SET @date = DateAdd(d, -2,
DateAdd(m, 1, @date)
)
SELECT @date
sql server获取当前月的天数
方法1
SELECT 32-DAY(getdate()+32-DAY(getdate()))
方法2
CREATE FUNCTION dbo.fn_getMonthDayAll ---自定义函数名称 ( @yyyyMM VARCHAR(20) ---指定输入参数格式 4位年份2位月份 ) RETURNS INT ---函数返回值类型 AS BEGIN DECLARE @dayAll INT DECLARE @monthStartDay DATETIME SET @monthStartDay =LEFT(@yyyyMM,4)+‘-‘+RIGHT(@yyyyMM,2)+‘-01‘ SELECT @dayAll= DATEDIFF(DAY,@monthStartDay,DATEADD(MONTH,1,@monthStartDay)) ---获取指定月份总天数 RETURN @dayAll; END GO SELECT dbo.Fun_GetMonthDays(‘201804‘), dbo.Fun_GetMonthDays(‘201808‘); ---测试获取月份总天数函数
以上是关于SQL server如何获取给定月的倒数数第二天的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 中查找给定 12 个月内 6 个月的最高连续期间