SQL Server如何基于日期变量SuspensionDate实现月中日比较判断
SQL Server 月初月末判断实现方案
实现逻辑
直接提取日期的日部分做判断:
- 日部分小于15号,判定为月初
- 日部分大于等于15号,判定为月末
输入的带时区偏移的ISO格式日期,可以直接转换为SQL Server原生的DATETIMEOFFSET类型处理,避免时区差异导致的日期计算错误。
代码示例
场景1:变量为字符串类型(匹配给出的格式)
DECLARE @SuspensionDate VARCHAR(50) = '2021-11-08T00:00:00.000-05:00' -- 转换为带时区的日期类型 DECLARE @OffsetDate DATETIMEOFFSET = CAST(@SuspensionDate AS DATETIMEOFFSET) -- 输出结果 SELECT CASE WHEN DAY(@OffsetDate) < 15 THEN N'月初' ELSE N'月末' END AS DatePeriod
场景2:字段本身为DATETIMEOFFSET/DATE/DATETIME类型
无需额外转换,直接判断即可:
SELECT CASE WHEN DAY(SuspensionDate) < 15 THEN N'月初' ELSE N'月末' END AS DatePeriod FROM 你的表名
补充说明
如果需要把15号也归为月初,把判断条件改为DAY(SuspensionDate) <= 15即可。
内容的提问来源于stack exchange,提问作者Zee
相关产品推荐
相关产品推荐

