如何在oraclesql中使用CASE-in-date

如何在oraclesql中使用CASE-in-date,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,如果为空,如何检查空值并返回为日期 CASE WHEN SRC.End_Date is NOT NULL THEN CAST((FROM_TZ(CAST(SRC.End_Date AS TIMESTAMP),'+00:00') AT TIME ZONE 'Europe/Belfast') AS DATE AS END_DATE, //I am getting Syntax error in AS before end_date ELSE CAST((FROM_TZ(CAST(de

如果为空,如何检查空值并返回为日期

 CASE  WHEN SRC.End_Date is NOT NULL THEN 
 CAST((FROM_TZ(CAST(SRC.End_Date  AS TIMESTAMP),'+00:00') AT TIME ZONE 'Europe/Belfast') AS DATE AS END_DATE, //I am getting Syntax error in AS before end_date
 ELSE 
 CAST((FROM_TZ(CAST(destination.enddate AS TIMESTAMP),'+00:00') AT TIME ZONE 'Europe/Belfast') AS DATE AS END_DATE, 

我想你只是错过了一些偏执:

... AS DATE)
然后将列别名放在case语句的
END
-关键字后面:

...
END AS END_DATE
总而言之:

CASE  WHEN SRC.End_Date is NOT NULL 
      THEN CAST((FROM_TZ(CAST(SRC.End_Date  AS TIMESTAMP),'+00:00') AT TIME ZONE 'Europe/Belfast') AS DATE)
      ELSE CAST((FROM_TZ(CAST(destination.enddate AS TIMESTAMP),'+00:00') AT TIME ZONE 'Europe/Belfast') AS DATE)
END AS END_DATE,

我想你只是错过了一些偏执:

... AS DATE)
然后将列别名放在case语句的
END
-关键字后面:

...
END AS END_DATE
总而言之:

CASE  WHEN SRC.End_Date is NOT NULL 
      THEN CAST((FROM_TZ(CAST(SRC.End_Date  AS TIMESTAMP),'+00:00') AT TIME ZONE 'Europe/Belfast') AS DATE)
      ELSE CAST((FROM_TZ(CAST(destination.enddate AS TIMESTAMP),'+00:00') AT TIME ZONE 'Europe/Belfast') AS DATE)
END AS END_DATE,
会更短


将更短

错误在于应在关键字
END
之后为整个大小写表达式提供列别名。这已在下面的答案中显示。但是你也可以简化你的表达。
CASE
表达式应该只出现在
CAST
函数中,因为其他一切都是一样的。@mathguy是的,我看到下面的答案后才注意到。我误解了条件。错误是,列别名应该在关键字
END
之后提供给整个大小写表达式。这已在下面的答案中显示。但是你也可以简化你的表达。
CASE
表达式应该只出现在
CAST
函数中,因为其他一切都是一样的。@mathguy是的,我看到下面的答案后才注意到。我误解了这个条件。它工作得完美无缺,我不知道如何用它来表示日期。非常感谢。它的工作完美无瑕,我不知道如何使用该案件的日期。谢谢。