select * from HOSPITAL_GATHERING WHERE 病人标识='2[吴永昌]253123727531.25' and to_date(归档时间 ,'yyyy-mm-dd hh24:mi:ss')=to_date('2008/1/8 15:55:05','yyyy-mm-dd hh24:mi:ss')  运行时出错:文字与格式字符串不匹配

解决方案 »

  1.   

    数据类型应该转化为to_date()类型,是不匹配的原因,转化一下就可以了。
      

  2.   

    to_date('2008/1/8 15:55:05','yyyy-mm-dd hh24:mi:ss')-- 看上面的 to_date(),右边是用的反斜拱(“/”),而你右边为什么要用横杠(“-”)呢?
    -- 前后要一致撒!
      

  3.   


    -- 同理:to_date(归档时间 ,'yyyy-mm-dd hh24:mi:ss') 这一部分,
    --       你的“归档时间”字段是用字符串表示日期的?
    --       那么你的字串日期格式也要与你后面的'yyyy-mm-dd hh24:mi:ss'相一致!
      

  4.   

    我的归档时间是date格式的字段。因为归档时间格式的数据有这种2005/10/17 9:24:51如果和2005/10/17 09:24:51肯定不匹配。所以现在两边都转换成'yyyy-mm-dd hh24:mi:ss'
      

  5.   

    select * from HOSPITAL_GATHERING WHERE 病人标识='2[吴永昌]253123727531.25' and to_date(归档时间,'yyyy/mm/dd hh24:mi:ss')=to_date('2008/1/8 15:55:05','yyyy/mm/dd hh24:mi:ss')提示文字与格式字符串不匹配
      

  6.   


    -- 日期字段存储在数据库中的格式是一样的,只是你看到的有“斜杠”(2005/10/17 9:24:51) 这只是个显示问题,有个修改当前会话日期显示格式的参数: nls_date_format(这样的问题回答过无数遍啦!),
    -- 请看如下操作:C:\Documents and Settings\Administrator>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 25 09:39:56 2011Copyright (c) 1982, 2005, Oracle.  All rights reserved.idle> conn scott/bee56915
    已连接。
    scott@TBWORA> select sysdate from dual;SYSDATE
    -------------------
    2011-08-25 09:40:06scott@TBWORA> alter session set nls_date_format='yyyy-mm-dd';会话已更改。scott@TBWORA> select sysdate from dual;SYSDATE
    ----------
    2011-08-25scott@TBWORA> alter session set nls_date_format='yyyy-mm-dd hh24';会话已更改。scott@TBWORA> select sysdate from dual;SYSDATE
    -------------
    2011-08-25 09scott@TBWORA> alter session set nls_date_format='yyyy-mm-dd hh24:mi';会话已更改。scott@TBWORA> select sysdate from dual;SYSDATE
    ----------------
    2011-08-25 09:40scott@TBWORA> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';会话已更改。scott@TBWORA> select sysdate from dual;SYSDATE
    -------------------
    2011-08-25 09:41:00
      

  7.   

    -- 既然你的“归档时间”字段是 date 类型,正确的写法应该是:select * from HOSPITAL_GATHERING 
    WHERE 病人标识='2[吴永昌]253123727531.25' 
    and   归档时间=to_date('2008/1/8 15:55:05','yyyy/mm/dd hh24:mi:ss');
      

  8.   

    如果真是存为2005/10/17 9:24:51,还需要用to_char转一下!
      

  9.   

    -- 再看下面的操作:scott@TBWORA> create table t(cdate date);表已创建。scott@TBWORA> insert into t(cdate) values(to_date('2011/08/01 21:23:57','yyyy/mm/dd hh24:mi:ss'));已创建 1 行。scott@TBWORA> select * from t;CDATE
    -------------------
    2011-08-01 21:23:57scott@TBWORA> alter session set nls_date_format='yyyy/mm/dd';会话已更改。scott@TBWORA> select * from t;CDATE
    ----------
    2011/08/01
      

  10.   

    我不知道这是不是我的问题所在2008/1/8 15:55:05这种日期不是yyyy-mm-dd hh24:mi:ss格式
      

  11.   

    -- 记住一句话:Date 类型,
    -- 无所谓存储格式问题(也就是说:所有的Date类型,在数据库里存储格式是一样的),
    -- 只是个显示格式问题:你想要他怎么显示,
    -- 你就可以用 to_char(date_column, DATE_NLS_FORMAT ) 去显示!
    -- 其中:DATE_NLS_FORMAT是你要指定的日期格式,
    -- 例如:'YYYY-MM-DD'、'MM-DD-YYYY'、'YYYY/MM/DD'、'yyyy-mm-dd hh24:mi:ss'-- 你还不明白,就是猪啦!
      

  12.   

    是有点笨,考虑问题不周到,一直以为是sql语句出错,没想到时数据完整性导致vs运行出错。现在问题解决了。总之谢谢各位了!