gpt4 book ai didi

node.js - 收到错误 : ORA-01843: not a valid month] error and don't know why

转载 作者:太空宇宙 更新时间:2023-11-03 22:57:05 25 4
gpt4 key购买 nike

使用 SQLdeveloper 我可以毫无问题地运行此查询:

update offer set startdate = '2019-10-01' where OFFER_ID =17160668

但是当我尝试使用 js 脚本执行此操作时,我收到“[错误:ORA-01843:不是有效的月份]”。

这是我运行的命令:

await run("update offer set startdate = '2019-10-01' where OFFER_ID = 17160668");

以及它调用的run函数

async function run(query) {
let connection;
const connectionString =*********;
try {
connection = await oracledb.getConnection({
user: *********,
password: *********,
connectString: connectionString
});
console.log(query);
let result = await connection.execute(query);
return result;
} catch (err) {
console.error(err);
} finally {
if (connection) {
try {
await connection.close();
} catch (err) {
console.error(err);
}
}
}
}

值得一提的是,我可以进行其他不涉及日期的更新。以及基本上任何其他查询。但不知何故,日期的格式给了我这个错误。

知道发生了什么吗?

/伊万

最佳答案

JS 客户端具有与 SQL Developer 中使用的不同的日期格式掩码。因此,SQL Developer 可以正确解释 '2019-10-01' 并将从字符串到日期的隐式数据转换应用为 to_date('2019-10-01' ,'yyyy-mm-dd')。但 Javascript 认为日期的格式为(例如)'mm-dd-yyyy' 并抛出错误,因为 2019 年不是有效月份。

解决方案很简单:不要依赖隐式数据类型转换。这只是不好的做法。始终使用日期文字传递日期 - date '2019-10-01' - 这样您就再也不会遇到此问题了。

或者您可以使用 Oracle to_date() 函数并传递日期格式掩码,但坦率地说,日期文字更简单、更清晰。

关于node.js - 收到错误 : ORA-01843: not a valid month] error and don't know why,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58878390/

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