如何创建日期标量函数:根据日期是否过中旬返回月初或月末
实现按日期判断返回当月第一天或最后一天的SQL逻辑
需求:接收一个日期参数,若日期超过当月15日(即日部分>15),返回当月第一天;未超过时返回当月最后一天。
以下是具体的SQL实现代码:
-- 声明测试用的日期变量 Declare @todate datetime = '20200301' select Case When DAY(@todate) > 15 Then Cast(DATEADD(dd, -( DAY( @todate ) -1 ), @todate) as date) -- 计算并返回当月第一天 else Cast(DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, @todate) + 1, 0))as date) -- 计算并返回当月最后一天 end
代码逻辑说明:
DAY(@todate):提取传入日期的“日”数值,用于判断是否超过15日- 当月第一天计算:用
DATEADD减去当前日减1的天数,把日期回退到当月1号 - 当月最后一天计算:先通过
DATEDIFF和DATEADD获取下一个月的第一天,再减1天,得到当月的最后一天
内容的提问来源于stack exchange,提问作者Cmedia
相关产品推荐
相关产品推荐

