gpt4 book ai didi

java.sql.SQLDataException : ORA-01843: mes no válido on select query

转载 作者:行者123 更新时间:2023-12-02 01:35:23 25 4
gpt4 key购买 nike

我有一个在 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)

最佳答案

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;

db<>fiddle demo

干杯!!

--更新--

-- 如果存储日期的格式是“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”

干杯!!

关于java.sql.SQLDataException : ORA-01843: mes no válido on select query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57522587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com