Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在oracle中获取过去的一天_Sql_Oracle11g - Fatal编程技术网

Sql 如何在oracle中获取过去的一天

Sql 如何在oracle中获取过去的一天,sql,oracle11g,Sql,Oracle11g,你有一个额外的select,你缺少一个end,你不能用相等运算符测试null-null永远不等于或不等于任何东西,甚至它本身 这将使您进一步了解: SELECT TRANSACTION_ID, (SELECT CASE WHEN CLOSE_DATE = NULL THEN round(sysdate - created_date) ELSE ROUND(CLOSE_DATE - CREATED_DATE) ) as NODAYS FROM TBL

你有一个额外的
select
,你缺少一个
end
,你不能用相等运算符测试
null
-
null
永远不等于或不等于任何东西,甚至它本身

这将使您进一步了解:

SELECT 
  TRANSACTION_ID,
  (SELECT CASE WHEN CLOSE_DATE = NULL 
    THEN
      round(sysdate - created_date) 
    ELSE ROUND(CLOSE_DATE - CREATED_DATE)
  ) as NODAYS 
FROM TBL_TRANSACTION 
WHERE CREATED_BY = 101913
您可以使用
NVL()
稍微简化一下:

SELECT 
  TRANSACTION_ID,
  CASE
    WHEN CLOSE_DATE IS NULL 
    THEN round(sysdate - created_date) 
    ELSE ROUND(CLOSE_DATE - CREATED_DATE)
  END as NODAYS 
FROM TBL_TRANSACTION 
WHERE CREATED_BY = 101913

运行此操作时会发生什么情况?您的问题是什么?
NVL
应该在
CLOSE\u DATE
上。
SELECT TRANSACTION_ID,
  ROUND(NVL(CLOSE_DATE, SYSDATE) - CREATED_DATE) as NODAYS 
FROM TBL_TRANSACTION 
WHERE CREATED_BY = 101913