select to_date('2008-11-7 14:05:42','yyyy-mm-dd hh24:mi:ss') from dual这个查询出来显示:07-十一月-2008 02:05:42 PM  后面有显示PM,
那我在这条语句select to_date('2008-11-7 02:05:42','yyyy-mm-dd hh12:mi:ss') from dual
后加什么它也能显示是07-十一月-2008 02:05:42 PM?跟用hh24一样的效果?
希望各位前辈帮帮忙,先谢谢了

解决方案 »

  1.   

    一种是to_char直接显示另一种是:alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'
      

  2.   

    显示时间的字段是sendtime 下面是我存在里面的一些数据假如我要查询时间等于07-十一月-2008 02:05:42 PM的记录,那用什么SQL语句查询?
      

  3.   

    如果要想统一的话,不妨在注册表里修改一下,使之完全统一。   在客户端的注册表HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0中,如无系统变量NLS_DATE_FORMAT,则“新建”->“字符串”,重命名为“NLS_DATE_FORMAT”,赋值为:“YYYY-MM-DD HH24:MI:SS”。  
      

  4.   

    通过函数实现了
    CREATE OR REPLACE FUNCTION GET_DATE(P_DATE IN VARCHAR2) RETURN VARCHAR2 AS
      V_MM1  CHAR(2);--取得月份数值
    V_MM2 VARCHAR2(2);--取得月份字符值
      V_DATE VARCHAR2(50);--返回结果日期
    BEGIN
      SELECT TO_CHAR(TO_DATE(P_DATE, 'YYYY-MM-DD HH:MI:SS'),
     'MM') INTO V_MM1
    FROM DUAL;
      
    SELECT TRIM(DECODE(V_MM1, 01,' 一 ',02,' 二 ',03,' 三 ',04,' 四 ',05,' 五 ',06,' 六 ',07,' 七 ',08,' 八 ',09,' 九 ',10,' 十 ',11,' 十一 ',12,' 十二 ')) INTO V_MM2 FROM DUAL;
      
      SELECT TO_CHAR(TO_DATE(P_DATE, 'YYYY-MM-DD HH:MI:SS'),
     'DD-MM"月"-YYYY HH:MI:SS AM') INTO V_DATE
    FROM DUAL;
      
      V_DATE := REPLACE(V_DATE,SUBSTR(V_DATE,4,2),V_MM2);
      
    RETURN V_DATE;
    END;执行语句
    select get_date('2008-11-7 02:05:42') from dual;应该可以得到想要的值
      

  5.   

    select to_char(to_date('2008-11-7 14:05:42','yyyy-mm-dd hh24:mi:ss'),'dd-mm-yyyy hh:mi:ss am') from dualresult:07-11-2008 02:05:42 PM如果你的pm显示的是 下午,那么修改你的nls_date_language
    sql->alter   session   set   nls_date_language=english;
    然后执行,ok
      

  6.   

    1 楼有理。这和你本地的日期显示格式的设置有关系。首先,sql 语句是在服务器端执行的。服务器段把字符串数据转换成日期后,返回给客户端,客户端会按本地的日期格式设置把日期显示出来
      

  7.   

    select to_char('2008-11-7 14:05:42','yyyy-mm-dd hh24:mi:ss') from dual