---------------------------
Project1
---------------------------
ORA-01861: 文字与格式字符串不匹配.
---------------------------
确定   
---------------------------

解决方案 »

  1.   

    2004-06-01 20:22:49
    这是查询出来的记录中的结果,我用date>='2004-06-01 20:22:49' and date<'2004-07-01 20:22:49'也不行,为什么?我用Access时也有这个问题。
      

  2.   

    用to_date()先转换
    to_date('2004-01-01 00:00:01','yyyy-mm-dd hh24:mm:ss')select * from table where date between 
    to_date('2004-01-01 00:00:01','yyyy-mm-dd hh24:mm:ss') and to_date('2004-02-01 00:00:00','yyyy-mm-dd hh24:mm:ss') 。
      

  3.   

    date>='2004-06-01 20:22:49'  date是日期类型,而'2004-06-01 20:22:49'  是字符串,使用TO_DATE来转化to_date('2004-01-01 00:00:00','yyyy-mm-dd hh24:mm:ss') 
      

  4.   

    select 
        * 
    from 
       table 
    where 
         date between to_date('2004-01-01 00:00:01','yyyy-mm-dd hh24:mi:ss' and to_date('2004-02-01 00:00:00','yyyy-mm-dd hh24:mi:ss'
      

  5.   

    比较日期,还是将日期转换为字符串再比较,这样稳妥,所有推荐:
    select * from table where TO_CHAR(date,'YYYY-MM-DD HH24:MI:SS') between '2004-01-01 00:00:01' and '2004-02-01 00:00:00'。
      

  6.   

    日期格式:
    SELECT VALUE FROM V$NLS_PARAMETERS WHERE PARAMETER='NLS_DATE_FORMAT'; 
    SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER='NLS_DATE_FORMAT'; 
    可以看出你的日期格式;
    在客户端的注册表HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0中,如无默认的日期格式,则“新建”->“字符串”,重命名为“NLS_DATE_FORMAT”(注意引号内的字符应大写),并赋值为如:yyyy-mm-dd hh24:mi:ss, 可直接使用,而不需要重启Oracle。
      

  7.   

    用SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER='NLS_DATE_FORMAT'
    查出的日期格式为什么是‘DD-MON-YY’?不是我查出的‘2004-01-01 00:00:01’格式?
      

  8.   

    我用这个
    select * from table where date between 
    to_date('2004-01-01 00:00:01','yyyy-mm-dd hh24:mm:ss') and to_date('2004-02-01 00:00:00','yyyy-mm-dd hh24:mm:ss')和这个
    select * from table where TO_CHAR(date,'YYYY-MM-DD HH24:MI:SS') between '2004-01-01 00:00:01' and '2004-02-01 00:00:00'都不行,而且如果我只想查询这样的格式行吗?
    select * from table where date between '2004-06-01' and '2004-06-30'
      

  9.   

    在注冊表中 \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ 下可以自定 NLS_DATE_FORMAT 格式.用 select * from table where date between to_date('2004-06-01','yyyy-mm-dd') and to_date('2004-06-30','yyyy-mm-dd') 測試通過.
      

  10.   

    SELECT VALUE FROM V$NLS_PARAMETERS WHERE PARAMETER='NLS_DATE_FORMAT';
    SELECT VALUE FROM V$NLS_PARAMETERS WHERE PARAMETER='NLS_TIME_FORMAT';
    把字符串转化成日期后再比较
      

  11.   


       用SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER='NLS_DATE_FORMAT'
    查出的日期格式为什么是‘DD-MON-YY’?不是我查出的‘2004-01-01 00:00:01’格式?
      
     -----------你的字段类型是字符性的吧
      

  12.   

    select * from table where date between '2004-06-01' and '2004-06-30'
    如果你的date字段的类型是日期的话就
    改成:
    select * from table where to_char(date ,'yyyy-mm-dd') between '2004-06-01' and '2004-06-30'
      

  13.   

    ---------------------------
    Project1
    ---------------------------
    ORA-00936: 缺少表达式.
    ---------------------------
    确定   
    ---------------------------
    不行啊,出现这个警告。
    。。
    哈,好了,没注意,写错了,写成 to char,没加上下划线,不过用to_date时不好用。为什么?我会尽快结帖的!!!!最迟明天。
      

  14.   

    select  *  from  table  where  date  between  to_date('2004-06-01','yyyy-mm-dd')  and to_date('2004-06-30','yyyy-mm-dd');
      

  15.   

    oracle 这点用起来有些麻烦。