oracle的时间戳获取不含中文内容的方式

背景:

        在做oracle的数据库同步时发现,创建的行级触发器获取表的时间戳数据时含有中文,导致入库时转义乱码,条件匹配失败。

调试过程:

        写了一个declare脚本测试:

declare
--类型定义
cursor c_job IS select * from A041;
--定义一个游标变量
c_row c_job%rowtype;
begin
open c_job;
loop
--提取一行数据到c_row
fetch c_job into c_row;
--判读是否提取到值,没取到值就退出
--取到值c_job%notfound 是false
--取不到值c_job%notfound 是true
exit when c_job%notfound;
dbms_output.put_line(c_row.STIMESTAMPZ);
end loop;
--关闭游标
close c_job;
end;

        输出结果:

        字段STIMESTAMPZ 是   TIMESTAMP WITH TIME ZONE 。

         

        抓包工具分析入库sql:

 问题就在中文转义问题。解决的核心就是取消中文。 

解决方式

查询和入库时,都用下面介绍的指定格式。

表结构:

STIMESTAMP    TIMESTAMP          
STIMESTAMPLZ    TIMESTAMP WITH LOCAL TIME ZONE          
STIMESTAMPZ    TIMESTAMP WITH TIME ZONE               

 sql字段获取方式:

select 
 to_char("STIMESTAMP", 'YYYY-MM-DD HH24:MI:SS:FF6'), 
 to_char("STIMESTAMPLZ", 'YYYY-MM-DD HH24:MI:SS:FF6'), 
 to_char("STIMESTAMPZ", 'YYYY-MM-DD HH24:MI:SS:FF6 TZH:TZM TZR TZD')
from A041

  结束!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值