无法使用 SYSDATE sql 查询将数据插入 Oracle DB

问题描述 投票:0回答:1

我的 liquibase 变更集如下所示

    <changeSet id="1739718925270-1" author="abc">
        <insert tableName="users">
            <column name="user_id" value="[email protected]"/>
            <column name="created_at" valueComputed="((SYSDATE - date '1970-01-01')*24*60*60*1000)"/>
            <column name="modified_at" valueComputed="((SYSDATE - date '1970-01-01')*24*60*60*1000)"/>
        </insert>
    </changeSet>

我必须在 sql 查询的帮助下插入数据only 在 oracle 数据库中所以我尝试了下面的 sql 查询但是它的语法是错误的所以它给出了下面的错误

查询:

INSERT INTO users 
(user_id, created_at, modified_at)
VALUES
('[email protected]', SYSDATE - TO_DATE('1970-01-01')*24*60*60*1000, SYSDATE - TO_DATE('1970-01-01')*24*60*60*1000);

错误:

Error report -
SQL Error: ORA-00932: inconsistent datatypes: expected NUMBER got DATE
00932. 00000 -  "inconsistent datatypes: expected %s got %s"

什么是正确的语法,因为我觉得我的语法是错误的,我的专栏是纪元时间值,但我不确定如何插入?

请帮忙

我现有的桌子:

existing table

sql oracle oracle-sqldeveloper liquibase
1个回答
0
投票

这个:

TO_DATE('1970-01-01')*24*60*60*1000

错了;您不能将日期与数字相乘。什么是例如2023 年 3 月 3 日 * 24?

也许你的意思是

(SYSDATE - TO_DATE('1970-01-01', 'yyyy-mm-dd')) * (24*60*60*1000)

所以你会得到两个日期值的差异(这是之间的天数)然后将它乘以something(一个数字),所以 - 结果是

NUMBER
数据类型。


此外,对于

to_date
always 指定格式模型。

© www.soinside.com 2019 - 2024. All rights reserved.