下面是一个可执行语句:成功的尝试:
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如果我想根据上面的结果把我的时间加起来,把它转换成数字会不会很繁琐?
谢谢
首先,|| 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
。