首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一个SQL语句中进行两个日期计算?

问如何在一个SQL语句中进行两个日期计算?
EN

Database Administration用户
提问于 2019-02-26 21:30:37
回答 1查看 47关注 0票数 1

在SQL存储过程中,我需要通过减去1个月来计算一个日期,并将日期设置为该月的第17天。

我可以减去一个月:

代码语言:javascript
复制
DATEADD(month,-1, loanFirstPmtDate)

但不知道如何也把这一天定在17日。

如何在一条SQL语句中同时进行这两种计算?

示例:贷款首次支付日期=‘03/01/2019’减去1个月,并将日期设定为17 =‘02/17/2019’

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-02-26 21:36:16

给定日期:

代码语言:javascript
复制
DECLARE @date datetime = CONVERT(date, GETDATE());

-本月初:

代码语言:javascript
复制
SELECT DATEADD(DAY, 1-DAY(GETDATE()), @date);

-上个月初-减去一个月:

代码语言:javascript
复制
SELECT DATEADD(MONTH, -1, 
  DATEADD(DAY, 1-DAY(GETDATE()), @date));

-然后到上个月十七日,再加上16天:

代码语言:javascript
复制
SELECT DATEADD(DAY, 16, DATEADD(MONTH, -1, 
  DATEADD(DAY, 1-DAY(GETDATE()), @date)));

这将适用于2008年及以上。2012年,你可以把它写得更短一点:

代码语言:javascript
复制
DECLARE @date datetime = DATEADD(MONTH, -1, GETDATE());

SELECT DATEFROMPARTS(YEAR(@date), MONTH(@date), 17);

如果您这样做是为了搜索,而不是为了输出,我强烈建议调整日期范围参数值,而不是在loanFirstPmtDate列中应用D6操作数据。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/230803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档