zoukankan      html  css  js  c++  java
  • 数据库NLS对日期展示的影响

    1.数据库的NLS

    本来想写成数据库的字符集的,但是感觉NLS(国家语言支持)更加的贴切,因为NLS包含了三部分,而不仅仅是数据库的字符集。

    1.1.NLS的组成

    数据库的NLS有三部分组成 语言_地区.编码,例如AMERICAN_AMERICA.AL32UTF8。

    AMERICAN:美式英语,指的是语言(例如TRADITIONAL CHINESE),用于数据库消息,例如数据库的报错等。

    AMERICA:美国,指的是地区(例如TAIWAN),用于日期,货币,数字,排序等,例如英语中星期一显示MON,而在中国,则显示为星期一。

    AL32UTF8:字符集,AL是ALL的意思,32指的是用四个字节来存储字符串类型的字段(例如char,varchar2,clob,long等),同时也用于数据库对象的名称,定义以及存储过程的编码等。

    1.2.NLS的设定

    NLS分为服务器端和客户端

    服务器端的NLS是在数据库创建的时候指定的,如下图。

    NLS客户端的设定是通过设置环境变量NLS_LANG指定的,将下面这句话放入oracle的环境变量中即可

    export NLS_LANG="TRADITIONAL CHINESE"_TAIWAN.AL32UTF8

    WINDOWS下客户端的设定分为两类,一类是sqlplus的,另一类是toad,oracle sql developer等客户端的

    sqlplus:windows安装oracle客户端的时候,oracle客户端会根据windows的本地语言设置NLS并写入注册表中(HKEY_LOCAL_MACHINE->SOFTWARE->WOW6432Node->ORACLE->KEY_OraClient12Home1_32bit),如果是64位,应该直接在SOFTWARE下

    toad等客户端默认使用UTF8,无需设置(也设置不了),不会出现乱码

    1.3.NLS的查看

    NLS分为服务器端和客户端的,服务器端就是在安装数据库的时候指定的。客户端,比如我在中国,查询一个美国部署的数据库,我就可以设定我客户端的NLS,让数据适应我的本地格式。

    查看数据库(服务器)的NLS设定:

    select * from NLS_DATABASE_PARAMETERS;
    

    查看当前SESSION(客户端)的NLS设定:

    select * from NLS_SESSION_PARAMETERS;
    --或者
    select * from v$nls_parameters;
    

    1.4.NLS影响日期的展示

    to_date函数的语法TO_DATE( string1, [ format_mask ], [nls_language ] )

  • 相关阅读:
    netty用户退出,网络断开,重连删除用户信息
    netty的 ctx.writeAndFlush()方法
    netty实现动态定时器
    springboot java.sql.SQLException: sql injection violation, multi-statement not allow : update XXX(table)
    SpringBoot用流多次读取request请求中的数据
    mysql分组统计,按照时间排序
    Flash Player离线安装包下载指南
    maven pom.xml配置详解
    oracle 权限管理
    Oracle 表空间管理
  • 原文地址:https://www.cnblogs.com/monkey6/p/14581559.html
Copyright © 2011-2022 走看看