oracle 存储的日期数据类型 date
后台存储固定7个字节,分别记录公元前/后、年、月、日、小时、分、秒
前台显示,是通过格式掩码进行控制,显示出现中文是格式掩码的问题,与后台存储是没有关系的
调整时间格式掩码,就可以按照自己想要的方式进行输出

解决方案 »

  1.   

    我oracle 数据中列的类型是 timestamp 的,不是date。这也可以改么??to_timestamp('2014-07-01 19:50','yyyy-mm-dd hh24:mi:ss')
      这种形式都出现中文。第一次接触 oracle
      

  2.   

    SQL> select to_timestamp('2014-07-01 19:50:00','yyyy-mm-dd hh24:mi:ss') from dual;TO_TIMESTAMP('2014-07-0119:50:00','YYYY-MM-DDHH24:MI:SS')
    ---------------------------------------------------------------------------
    01-7月 -14 07.50.00.000000000 下午SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';会话已更改。SQL> select to_timestamp('2014-07-01 19:50:00','yyyy-mm-dd hh24:mi:ss') from dual;TO_TIMESTAMP('2014-07-0119:50:00','YYYY-MM-DDHH24:MI:SS')
    ---------------------------------------------------------------------------
    01-7月 -14 07.50.00.000000000 下午SQL> select to_date('2014-07-01 19:50:00','yyyy-mm-dd hh24:mi:ss') from dual;TO_DATE('2014-07-01
    -------------------
    2014-07-01 19:50:00SQL>
      

  3.   

    这个仅仅是本地显示问题,数据还是日期类型数据,不用担心看,如果想按格式显示,那就用to_char来格式化一下即可
      

  4.   

    如果你前台程序是拼SQL的(看起来就是这样),要指定格式转换
    sql = " ... to_timestamp('" & dt.ToString("yyyy-MM-dd HH:mm:ss") & "','yyyy-mm-dd hh24:mi:ss')..."最好的做法是通过 OracleCommand 的参数来传值,就可以避免拼SQL的字符串格式转换问题。
      

  5.   

    timestamp只是个时间戳,只要时间正确,就不用纠结了。所谓中文或英文只是显示的问题,和定义的语言和格式有关
    例如,systimestamp是timestamp类型的当前时间戳
    可以比较一下select to_char(systimestamp,'yyyy-mm-dd hh12:mi:ssxff6 AM'),
      to_char(systimestamp,'yyyy-mm-dd hh12:mi:ssxff6 AM','NLS_DATE_LANGUAGE = American'), 
      to_char(systimestamp,'yyyy-mm-dd hh12:mi:ssxff6 AM','NLS_DATE_LANGUAGE = ''SIMPLIFIED CHINESE''') from dual;