【问题标题】:SQl Difference in dateSQL 日期差异
【发布时间】:2016-01-05 06:49:31
【问题描述】:

我需要找到两个date 的不同之处 但年份应该是十进制 例子 我需要找出16-jun-201030-Sep-2014 之间的区别

应该是4.30 yrs

我尝试以下方式 选择 DATEDIFF(YY,'16-jun-2010','30-sep-2014') 作为 YearsOfServices

它只给我 4 个

【问题讨论】:

  • 欢迎来到 SO,请在提问时更具体一点:您尝试过什么,您期望什么等。请参阅how to ask
  • 这两个日期之间的差永远不会是 4.5 年
  • 对,请更正问题
  • 我编辑了我的问题,希望现在清楚
  • 即使进行了编辑,我也完全不清楚您是如何到达小数点后的.50 的。从六月到九月,不是半年。两者之间的间隔超过 50 天,这是我想到的唯一两种可能性(后者将是一个非常令人费解的概念),所以请解释这个计算的逻辑我们。

标签: sql sql-date-functions sqldatetime


【解决方案1】:

内置函数datediff() 所做的是计算日期之间跨越的周期边界数。

datediff(yy,'16 jun 2014','30 Sep 2015')

returns 1

如果您以天为单位计算两个日期之间的差异,然后除以 400 年跨度 (365.2425) 的日历年平均长度(以天为单位),您将获得更准确的结果:

datediff(day,{start-date},{end-date},) / 365.2425

例如,

select datediff(day,'1 Jan 2000' ,'18 April 2014') / 365.2425

return 14.29461248 — 只需将其四舍五入到所需的精度。

【讨论】:

    【解决方案2】:

    请试试这个

    SELECT DATEDIFF(dd, '16-jun-2010','30-Sep-2014')/365.0 AS DiffDate
    

    你应该试试

    SELECT DATEDIFF(mm, '16-jun-2010','30-sep-2014')/12.0 AS DiffDate
    

    【讨论】:

    • 正确的是,有 4 年又只有 3 个月,如果有 4 年和 6 个月,那么时间答案将是 4.5 年左右
    【解决方案3】:

    你可以试试这个

    Declare @a Date
    declare @b date
    set @a ='07-01-2013'
    set @b='08-02-2014'
    
    
    
    
     select  (DATEDIFF(DAY,@a,@b))/convert(numeric,365)
    

    【讨论】:

      【解决方案4】:

      我得到了我的答案 Round(DATEDIFF(DD,'16-jun-2010','30-sep-2014')/365.0,1) 作为 Datediff 感谢您的帮助

      【讨论】:

        猜你喜欢
        • 2018-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        • 2019-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多