oracle mybatis DATE无法存时分秒

本文探讨了在Oracle数据库中使用DATE与TIMESTAMP类型的差异,特别是在MyBatis框架下进行操作时的问题。通过实例展示了如何将包含时分秒的时间数据正确地插入到Oracle数据库中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<sql id="sys_sms_id">SYS_SMS_ID.NEXTVAL</sql>
<insert id="save" parameterType="SmsDO">
        insert into SYS_SMS
        (
            ID,
            PHONE,
            CODE,
            SENDDATE
        )
        values
        (
            <include refid="sys_sms_id"/>,
            #{phone,jdbcType=VARCHAR},
            #{code,jdbcType=VARCHAR},
            #{sendDate,jdbcType=DATE}
        )
    </insert>

在将时间存到oracle里面的时候发现怎么都无法将带时分秒的日期存进去,每次存只能存到年月日。
结果发现在mybatis里面设置传参的jdbcType=DATE的话就会出现问题。
所以改为

<sql id="sys_sms_id">SYS_SMS_ID.NEXTVAL</sql>
<insert id="save" parameterType="SmsDO">
        insert into SYS_SMS
        (
            ID,
            PHONE,
            CODE,
            SENDDATE
        )
        values
        (
            <include refid="sys_sms_id"/>,
            #{phone,jdbcType=VARCHAR},
            #{code,jdbcType=VARCHAR},
            #{sendDate}
        )
    </insert>

2018-05-30更新
当使用的数据库为oracle时,时间类型全部使用TIMESTAMP,即

```

SYS_SMS_ID.NEXTVAL

insert into SYS_SMS
(
ID,
PHONE,
CODE,
SENDDATE
)
values
(
,
#{phone,jdbcType=VARCHAR},
#{code,jdbcType=VARCHAR},
#{sendDate,jdbcType=TIMESTAMP}
)

“`

DATE在oracle中只能存储年月日,TIMESTAMP可以存储到时分秒,所以在使用的时候全部换成TIMESTAMP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值