gpt4 book ai didi

sql - 格式代码出现两次

转载 作者:行者123 更新时间:2023-12-04 22:41:30 33 4
gpt4 key购买 nike

我在下面的 oracle 查询中收到以下错误。我没有看到我在查询中给出的格式有问题。我认为它可能与 .SSS 有关,但我不能确定:

SELECT
*
FROM
(
SELECT
*
FROM
comprater_requests
WHERE
spname =?
AND effectivedate >= TO_DATE(?,'yyyy-MM-dd HH:mi:ss.SSS')
AND effectivedate <= TO_DATE(?,'yyyy-MM-dd HH:mi:ss.SSS')
)
WHERE
ROWNUM <= 100

错误:
ORA-01810: format code appears twice

参数:
Parameters: [Google, 2018-07-24 00:00:00.000, 2018-09-06 00:00:00.000]

table :
    CREATE TABLE COMPRATER_REQUESTS
(
ID NUMBER DEFAULT COMP_RATER_SEQ.NEXTVAL PRIMARY KEY,
TRANSACTIONID VARCHAR2(20 BYTE) NOT NULL,
QUOTE CLOB,
ARCHIVEXML CLOB,
ADDITIONALINFO CLOB,
QUOTEID VARCHAR2(20 BYTE),
AGENTID CHAR(50 BYTE),
EFFECTIVEDATE DATE
);

用户从 UI 中选择两个日期,该日期以以下格式发送到后端代码“Tue Sep 04 00:00:00 EDT 2018”,但 oracle DB 将日期存储为“2018-09-04 00:00” :00.0'。所以我尝试通过执行以下操作将他们选择的日期转换为该格式:
 dateFormat = new SimpleDateFormat(CompRaterPropertiesML.ACORD_DB_DATE_FORMAT)
fromDateFormat = dateFormat.format(selectedDate1)
toDateFormat = dateFormat.format(selectedDate2)

这会将它转换为我需要的格式,但它现在是一个字符串,我认为这给了我问题。

最佳答案

TO_DATE 转换为日期,而不是时间戳。

在 Oracle 中,日期没有几分之一秒。您要创建的是时间戳;为此,请使用 TO_TIMESTAMP。

执行后,您将收到相同的错误;要指示秒的分数,请使用 .ff ,不是 .sss . (注意:两个 f,而不是三个!)

你也错过了 hh 之后的 24。应该是 '... hh24:mi:ss.ff'

关于sql - 格式代码出现两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52006257/

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