使用大小写插入值的情况

时间:2011-11-18 01:59:15

标签: sql oracle insert timezone extract

下面显示了一个可执行语句: 成功的尝试:

INSERT INTO Personnel_Assignment (DATE, testno, Hours) 
SELECT '21-OCT-2011', '12345', 
   CASE
      WHEN Extract(day From(S.ENDTIME-S.STARTTIME) ) >= 1 
         THEN (Extract(Day From(S.ENDTIME-S.STARTTIME) ) * 24 
            + Extract(Hour From(S.ENDTIME-S.STARTTIME) ) )
      WHEN S.endtime IS NULL
         THEN NULL
      ELSE
         Extract(Hour From(S.ENDTIME-S.STARTTIME) ) )
      ||'hrs' End ||
      Extract(Minute From(S.ENDTIME-S.STARTTIME) ) || 'Min' As Hours 
FROM Schedule S`

请注意,结束时间和开始时间的数据类型是时区,格式为:

Nls_Timestamp_Tz_Format='HH24:MI TZR'

我想问一个问题: 我的小时数据类型是varchar2 如果我想从上面的结果中总结我的时间,将它转换成数字是否会很乏味?

由于

1 个答案:

答案 0 :(得分:1)

首先,|| Else没有意义。 ||之后的部分必须是另一个连接的表达式。

其次,你肯定可以嵌套case表达式,但在你的情况下你不需要。单个case表达式可以包含多个when / then个分支,格式为case when [condition_A] then [expression_if_A_is_true] when [condition_B] then [expression_if_A_is_false_and_B_is_true] else [expression_if_A_and_B_are_both_false] end