我有一个查询在DataGrip上工作,但不在Spring boot应用程序上工作。数据库日期格式为: 19-JUN-01 12.00.00.000000 AM
我试着改变日期的格式,但没有帮助。
SELECT
to_char(to_date(substr(NVL(w.BIRTHDATE, SYSDATE), 1, 9), 'DD-MON-RR'), 'YYYY-MM-DD HH:MI:SS') dob
FROM DBNAME.USERS 我得到的异常
ORA-01843: mes no válido; nested exception is java.sql.SQLDataException: ORA-01843: mes no válido
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:84)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1442)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:632)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:668)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:693)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:747)
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:215)
at com.voida.panamax.service.impl.ApiServiceImpl.lambda$init$3(ApiServiceImpl.java:240)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLDataException: ORA-01843: mes no válido
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:225)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:53)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:774)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4798)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:4845)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1501)
at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:677)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:616)发布于 2019-08-16 18:09:12
在oracle中有很多方法可以将日期转换为任何可读格式。
由于日期存储在字符串中,因此需要将其转换为日期,并使用适当的方法以所需的格式显示它。
在您的示例中,您可以使用以下内容:
--更新了我的答案,因为BIRTHDATE是一个字符串。
SELECT
TO_CHAR(NVL(TO_DATE(SUBSTR(w.BIRTHDATE, 1, 18), 'RR-MON-DD HH24.MI.SS'), SYSDATE), 'YYYY-MM-DD HH:MI:SS') DOB
FROM DBNAME.USERS;干杯!!
-更新--
--如果存储日期的格式为'dd-mon-yy‘,则使用以下格式:
SELECT
TO_CHAR(NVL(TO_DATE(SUBSTR(w.BIRTHDATE, 1, 18), 'DD-MON-RR HH24.MI.SS'), SYSDATE), 'YYYY-MM-DD HH:MI:SS') DOB
FROM DBNAME.USERS;请参阅更新的demo,格式如何更改整个输出。在第二个查询中,我使用了'DD-MON-RR‘
干杯!!
https://stackoverflow.com/questions/57522587
复制相似问题