【问题标题】:How to remove the decimals when Subtracting casted Dates (EPOCH) in SQL Developer在 SQL Developer 中减去投射日期 (EPOCH) 时如何删除小数
【发布时间】:2021-03-03 16:29:16
【问题描述】:

我将两个纪元日期相减以获得一个正整数,它显示从创建到完成(也称为修改)所经过的天数。

这是我的查询中的一个 sn-p,它在 SQL Developer 20.2.0 中实现了这一点:

(TO_DATE('19700101', 'YYYYMMDD') + (DATEMODIFIED / 86400))-(TO_DATE('19700101', 'YYYYMMDD') + (DATECREATED / 86400)) AS "Age at Completion", 

但是,这会导致以下输出: 74.2922256787899889869

我不需要查看所有这些小数位。这样的结果就足够了:

74.2922256787899889869 = 74

74.5922256787899889869 = 74

我认为 ROUND 函数可能是我正在寻找的,但我不知道如何在该行中实际使用它。有人可以帮忙吗?提前谢谢你。

【问题讨论】:

    标签: sql oracle syntax rounding


    【解决方案1】:
    (A + B) - (A + C) == A + B - A - C == B - C
    

    那么为什么不简单地ROUND((DATECREATED - DATEMODIFIED) / 86400)呢?

    或者这样:

    DATEMODIFIED  * INTERVAL '1' SECOND - DATECREATED * INTERVAL '1' SECOND
    
    EXTRACT(DAY FROM (DATECREATED - DATEMODIFIED) * INTERVAL '1' SECOND)
    

    【讨论】:

    • 得到以下结果:+ 74 06:46:15.000000 如何去掉粗体部分,所以它只是一个整数?
    • 可以使用EXTRACT函数。
    • 你能帮忙吗?如果你不知道,我对 SQL 还是很陌生 :)
    • 好吧,然后把结果变成 -74,有没有办法只得到 74 作为结果而不是别的?跨度>
    • 我稍微修改了一下以获得我想要的结果:EXTRACT(DAY FROM (DATECREATED - DATEMODIFIED) * INTERVAL '-1' SECOND) AS "Age at Completion",
    猜你喜欢
    • 2015-05-13
    • 2012-09-27
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2021-04-28
    相关资源
    最近更新 更多