Ann*_*ang 4 sql oracle plsql timestamp date-conversion
select
to_timestamp(SCHEDULED_TIME,'YYYY-MM-DD HH24:MI:SS.FF') as SCHEDULED_TIME,
TRUNC(to_date(to_timestamp(SCHEDULED_TIME,'YYYY-MM-DD HH24:MI:SS.FF'),'YYYY-MM-DD HH24:MI:SS'))
from S_TIDAL_STATUS
Run Code Online (Sandbox Code Playgroud)
错误为:ORA-01830:日期格式图片在转换整个输入字符串之前结束01830。00000-“日期格式图片在转换整个输入字符串之前结束”
目标是返回类似
2017-07-91 23:14:00(点后没有内容)。
您尝试遇到的问题是应用于时间戳的函数TO_DATE()。TO_DATE()采用VARCHAR2(字符串)输入,而不是时间戳。因此,Oracle首先使用NLS_TIMESTAMP_FORMAT参数隐式地将时间戳转换为字符串,然后尝试将该字符串转换为日期。根据您的NLS_TIMESTAMP_FORMAT,您可能会遇到不同的错误。
将时间戳转换为日期(datetime)的方法(截断了几分之一秒的时间)是使用CAST函数。例:
select systimestamp,
cast (systimestamp as date) as ts_cast_to_date
from dual
;
Run Code Online (Sandbox Code Playgroud)
或者,如果您所有的字符串都完全采用该格式,则可以先截断字符串并直接应用TO_DATE:
to_date(substr(scheduled_time, 1, 19), 'yyyy-mm-dd hh24:mi:ss')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16151 次 |
| 最近记录: |