如何指定要尝试选择的值仅是时间?

时间:2018-10-26 12:21:18

标签: sql oracle

我试图仅选择标准24小时格式的时间值。 我尝试了以下操作,但对我不起作用(语法错误)。

SELECT to_char('08:45','HH:Mi') AS TIME FROM DUAL;
SELECT to_date('08:45','HH:Mi') AS TIME FROM DUAL;

所需结果:

|TIME|
|08:45|

1 个答案:

答案 0 :(得分:3)

正如@Gordon所说,Oracle中没有TIME数据类型。最接近的替代方法是INTERVAL DAY TO SECOND

使用TO_DSINTERVAL将您的时间字符串转换为间隔。

SELECT SYSDATE,
          TO_DSINTERVAL('00 ' || '08:45' || ':00') AS time,
SYSDATE + TO_DSINTERVAL('00 ' || '08:45' || ':00') AS date_plus_time
FROM dual;

SYSDATE             TIME                DATE_PLUS_TIME     
------------------- ------------------- -------------------
2018-10-26 18:12:58 +00 08:45:00.000000 2018-10-27 02:57:58