首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql中基于360天的日期差异

mysql中基于360天的日期差异
EN

Stack Overflow用户
提问于 2014-09-08 15:41:12
回答 4查看 1.4K关注 0票数 0

我在一个金融项目中工作,我需要计算欠款天数的差额。如果我使用mysql的datediff()方法,那么它将返回基于365天的结果。我需要360天的结果。如果使用以下sql查询

代码语言:javascript
复制
select datediff('20140908','20130908') from dual;

mysql返回日期差异365。这是实际的日期差异,但在会计/财务计算中,差异恰好是一年(360天)。这就是我想要的。结果应该是360而不是365。目前我想使用美国标准。

EN

回答 4

Stack Overflow用户

发布于 2018-02-20 19:39:44

为了得到与Excel相同的结果,我在MySQL中找到了以下代码:

代码语言:javascript
复制
    select case 
when (day(Startdate)>=30 or Startdate=last_day(Startdate) then
    case
    when(day(Enddate)>=30) then
        30*(12*(year(Enddate)-year(Startdate))+month(Enddate)-month(Startdate))
    else
        30*(12*(year(Enddate)-year(Startdate))+month(Enddate)-month(Startdate))+days(Enddate)-30
    end
else
    30*(12*(year(Enddate)-year(Startdate))+month(Enddate)-month(Startdate))+days(Enddate)-days(Startdate)
end
票数 1
EN

Stack Overflow用户

发布于 2014-09-08 16:00:11

使用

代码语言:javascript
复制
TO_DAYS(date2) - To_DAYS(date1)

它返回date1和date2之间的天数。然后,您可以对结果执行所需的操作。

票数 0
EN

Stack Overflow用户

发布于 2018-11-17 00:28:39

日期=起始日期编辑=终止日期

计算两个日期之间的天数,考虑到一个月是30天,一年是360天,并检查日期是否在月底,例如从1.1.2019到28.2.2019 = 60天等。

对于1个月或1年,更新日期应在前一天,因此1.1 - 31.1 = 30天,1.1 - 1.2 = 31天

SELECT最大( 0,(年(DATE_ADD(编辑,间隔1天))-年(日期))* 360 +(月(DATE_ADD(编辑,间隔1天))-月(日期))* 30 +(IF(日期)(DATE_ADD(编辑,间隔1天)=DAYOFMONTH(LAST_DAY(DATE_ADD(编辑,间隔1天)),30,DAYOFMONTH(DATE_ADD(edate,间隔1天))-IF(DAYOFMONTH(日期)=DAYOFMONTH(LAST_DAY(日期)),30,DAYOFMONTH(日期) )

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

https://stackoverflow.com/questions/25719478

复制
相关文章

相似问题

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