2015-06-18 25 views
1

有开放日期2015-05-19 10:40:14和结束日期2015-05-20 09:21:11
当我减去他们我得到(close_date.date_value - open_date.date_value) 一些9.45104166666666666666666666666666666667E-01如何在sql中屏蔽日期格式?

我想忽略时间10点40分十四秒和09 :21:11从2日 同样我减去(SYSDATE - open_date.date_value),并获得数天数时,我减去2个日期

谁能帮我解决这个问题

case 
when s then 
(close_date.date_value - open_date.date_value) 
else 
(SYSDATE - open_date.date_value) 
end as "dd", 
+0

请提供例如,你需要有什么。你的结果现在是0.9天。它应该四舍五入吗?还是其他什么? –

+0

为什么选择Java,SQL Server? –

+0

@JamesZ:如果封闭和开放的日期是在同一天,我希望它被四舍五入,因为你告诉 – Test

回答

0

性能的观点,我不会用TRUNC,因为它会抑制上的日期任何常规指数。我会让日期算术,因为它是和ROUND的值。

例如,

SQL> SELECT SYSDATE - to_date('2015-05-20 09:21:11','YYYY-MM-DD HH24:MI:SS') diff, 
    2   ROUND(
    3   SYSDATE - to_date('2015-05-20 09:21:11','YYYY-MM-DD HH24:MI:SS') 
    4    ) diff_round 
    5 FROM dual; 

     DIFF DIFF_ROUND 
---------- ---------- 
29.1248264   29 

SQL> 
1

试试这个

case 
    when status_name.list_value_id=9137981352013344123 then 
    (TRUNC(close_date.date_value) - TRUNC(open_date.date_value)) 
    else 
    (TRUNC(sysdate) - TRUNC(open_date.date_value)) 
    end as "e2e execution time", 
+0

(convert(date,close_date.date_value) - convert(date,open_date.date_value)) -^- 错误在这里 - ORA-00936:缺少表达式 – Test

+0

这是为sql服务器 –

+0

我需要它为oracle db – Test

1

可以使用DATEDIFF函数。下面是代码

SELECT DATEDIFF(DAY, CONVERT(DATETIME, '2015-05-19 10:40:14'), CONVERT(DATETIME, ' 2015-05-20 09:21:11')) 
+0

这是SQL Server语法,不是Oracle – APC