转换为日期并仅提取时间

时间:2014-06-12 08:40:29

标签: plsql

我怎么才能获得varchar2的时间?我这样做:

  select to_date(substr(fecha,10,16),'HH:MI:SS AM') from total;

但它给了我:

01/06/2014 5:50:01
01/06/2014 5:50:05
01/06/2014 5:50:05
01/06/2014 5:50:50

我想:

5:50:01
5:50:05
5:50:05
5:50:50

有任何帮助吗?请

2 个答案:

答案 0 :(得分:1)

虽然它可能不是您所期望的,但代码运行正常。在Oracle中,如果您没有指定日期的日 - 月 - 年份部分,则默认为当月的第一天。 Oracle DATE必须始终有一天/月/年 - 没有办法在DATE列或变量中没有日期。

SQLFiddle here

如果你真的想让它只显示日期的时间部分,你只需要使用TO_CHAR(date_value, 'HH24:MI:SS')仅提取小时 - 分钟 - 秒并将其视为字符串。

分享并享受。

答案 1 :(得分:0)

我认为你应该同时使用to_char和to_date:

select to_char(to_date(fecha,'dd-mm-yyyy HH:MI:SS AM'),'HH:MI:SS AM') 
time from total;