如何在sql中屏蔽日期格式?

时间:2015-06-18 06:17:44

标签: sql oracle oracle11g date-arithmetic

有开放日期2015-05-19 10:40:14和结束日期2015-05-20 09:21:11
当我减去它们时,我得到(close_date.date_value - open_date.date_value) 一些9.45104166666666666666666666666666666667E-01

我想忽略2个日期的时间10:40:14和09:21:11 同样地,我减去(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",

3 个答案:

答案 0 :(得分: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",

答案 1 :(得分:1)

您可以使用DATEDIFF功能。这是代码

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

答案 2 :(得分:0)

效果的角度来看,我不会使用 TRUNC ,因为它会在日期列<列上取消任何常规索引 / strong>即可。我会让日期算术原样, 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>