.0
- доли секунды, а не смещение часового пояса; но тип данных даты в любом случае не позволяет.
Если ваша строка всегда имеет .0
, то вы можете рассматривать это как фиксированные символы, чтобы игнорировать ее:
select TO_DATE ('2020-04-01 00:00:00.0','YYYY-MM-DD HH24:MI:SS".0"') from DUAL;
TO_DATE('2020-04-01
-------------------
2020-04-01 00:00:00
Если это может быть ненулевым или просто, если вы предпочитаете, он может преобразовать в метку времени и затем преобразовать ее в дату:
select CAST( TO_TIMESTAMP ('2020-04-01 00:00:00.0','YYYY-MM-DD HH24:MI:SS.FF') AS DATE) from DUAL;
CAST(TO_TIMESTAMP('
-------------------
2020-04-01 00:00:00
Элемент модели формата FF
представляет доли секунды, а в качестве документации говорит , то есть «Действителен в форматах меток времени и интервалов, но не в форматах DATE».
Не совсем понятно, что означает получение значения из Java, но если вы делаете вызов JDB C и передача параметра в виде строки, вы должны отступить назад и использовать вместо этого правильный тип данных JDB C. Также обратите внимание на комментарий @ Оле об использовании современного типа данных Java, если можете.