我想知道是否可以在一列中有两种格式的日期。
问题是,如果表为 NULL(即日期),我需要一个默认值,如果表不为空,那么我只需要一个时间戳。
我已经制作了一个应该这样做的 CASE,但它不起作用。
CASE WHEN s.time IS null
THEN
TO_DATE('01-JAN-1901 01:00:00', 'dd-MON-yyyy HH24:MI:SS')
ELSE
TO_DATE(s.time, 'HH24:MI:SS')
END AS time
该语句给了我“ ORA-01858:在需要数字的地方发现了一个非数字字符。 ”
如果我尝试这样的事情:
CASE WHEN s.time IS null
THEN
TO_DATE('01-JAN-1901 01:00:00', 'dd-MON-yyyy HH24:MI:SS')
ELSE
TO_DATE(TO_CHAR(s.time, 'HH24:MI:SS'), 'HH24:MI:SS')
END AS time
它会起作用,但是它会在时间前面添加一个日期 - 它看起来像这样:(我不知道它从 2013 年 7 月 1 日到哪里得到那个日期)
TIME
-------
01-JAN-1901 01:00:00
01-JUL-2013 15:35:00
而不是这个:
TIME
-------
01-JAN-1901 01:00:00
15:35:00
(这就是我要的)