界面需要录入营业开始时间(kssj)和营业结束时间(jssj)两项,此两个字段在Oracle数据库中是date格式的。
需要填入时间如"8:00",然后保存成功。
可是,在界面上录入,总是提示错误:无效的月份。
或者是提示:文字与格式字符串不匹配。请问:我的字段的类型设置有错误吗?
界面上录入的营业时间应该是什么样的?

解决方案 »

  1.   

    Data在数据库中的保存格式是
    DD-MM-YYYY:HH:MM:SS
    如10-02-2009:14:29:21
      

  2.   

    这个应该具体问题具体分析吧,我使用的是PL/SQL,但是我经常使用的时间格式是:yyyy-mm-dd hh24:mi:ss的格式,其实我们经常使用TO_CHAR函数来限制时间的输出格式,例如:
    SQL> select to_char(start_date,'yyyy-mm-dd hh24:mi:ss') from zzw_temp;TO_CHAR(START_DATE,
    -------------------
    2007-02-03 13:24:00
    2007-02-03 13:30:00
    2007-02-03 13:30:00
    2007-02-03 13:30:00
    2007-02-03 13:30:00
    2007-02-03 13:32:00
    2007-02-03 13:32:00
    2007-04-02 17:07:00
    2009-01-13 13:53:009 rows selected.SQL> select to_char(start_date,'mm-dd-yyyy hh24:mi:ss') from zzw_temp;TO_CHAR(START_DATE,
    -------------------
    02-03-2007 13:24:00
    02-03-2007 13:30:00
    02-03-2007 13:30:00
    02-03-2007 13:30:00
    02-03-2007 13:30:00
    02-03-2007 13:32:00
    02-03-2007 13:32:00
    04-02-2007 17:07:00
    01-13-2009 13:53:009 rows selected.SQL> select * from zzw_temp;START_DATE
    --------------
    03-2月 -07
    03-2月 -07
    03-2月 -07
    03-2月 -07
    03-2月 -07
    03-2月 -07
    03-2月 -07
    02-4月 -07
    13-1月 -099 rows selected.SQL> 如果是在界面上进行输入的话,我认为这个与界面设计者写的程序有关。不知道对你有帮助吗?
      

  3.   

    举一个例子吧,例如我在设计程序的时候,经常将界面上写入的格式为yyymmddhhmiss的格式,例如:2009年4月10日14时47分50秒,在界面上输入20090410144750即可,在后台我会使用to_date(变量,'yyyy-mm-dd hh24:mi:ss')的方式进行转化,例如:
    insert into zzw_temp 
    select to_date('20090410144750','yyyy-mm-dd hh24:mi:ss') from dual;就成功了,不知道我说的是否明白?
      

  4.   

    其实Date的含义是表示日期的,如果你非要用它来表示时间的话
    可以用to_date函数转换后保存到DB
    insert into test values(to_date('8:00:00','HH:MI:SS'));
      

  5.   

    我想你还可能会问,怎么取出来呢
    SELECT TO_CHAR(cdate ,'HH:MI:SS') "Time" FROM test;
    cdate 为表的字段
      

  6.   

    在oracle数据库中字符和时间是联系比较密切的,如果能熟练使用to_char和to_date函数,那么就会对字符和时间类型的变量,有深一层的了解,这只是我的一点儿心得认识,仅供参考
      

  7.   

    同意这个,你在界面上录入的会被认为是字符串类型,保存的时候需要to_date转化成date型