Oracleʱ¼äÀàÐÍÊý¾ÝΪ0µÄBug
¿ª·¢×éÔÚÊý¾ÝÇ¨ÒÆÊ±£¬±¨¸æ·¢ÏÖһЩÊýֵΪ'0000/00/00'µÄdateÊý¾Ý£¬µ¼ÖÂÊý¾ÝÇ¨ÒÆÊ§°Ü¡£
Õâ¸öÎÊÌâÓÐµãÆæ¹Ö£¬ÒòΪÔÚOracleÖУ¬dateÀàÐ͵ÄÊý¾ÝµÄȡֵ·¶Î§ÊÇ´Ó-4712/12/31µ½9999/12/31Ö®¼ä£¬²¢ÇÒÄê·Ý²»ÄÜΪ0¡£Ò²¾ÍÊÇ˵'0000/00/00'ÊÇÒ»¸ö·Ç·¨Êý¾Ý£¬²»ÎªOracleËù½ÓÊÜ¡£
SQL> select to_date('0000-00-00', 'yyyy-mm-dd') from dual;
select to_date('0000-00-00', 'yyyy-mm-dd') from dual
ORA-01843: not a valid month
SQL> select to_date('0000-01-01', 'yyyy-mm-dd') from dual;
select to_date('0000-01-01', 'yyyy-mm-dd') from dual
ORA-01841: (full) year must be between -4713 and +9999, and not be 0
µ«ÎªÊ²Ã´ÔÚÊý¾ÝÖл¹ÊdzöÏÖÁË'0000/00/00'ÄØ£¿¶Ô´ËÎÊÌâÉÔ΢Ñо¿ÁËһϣ¬·¢ÏÖOracleÔÚdateÀàÐ͵ÄÊý¾ÝÎÊÌâÉÏȷʵ´æÔÚһЩbug£¬Í¨¹ýÒ»Ð©ÌØÊâ·½·¨»¹ÊÇÄÜʹdateÀàÐÍ´æ´¢'0000/00/00'Êý¾Ý¡£ÏÈ¿´ÒÔϲÙ×÷£¬ÕâÊÇbugÖ®Ò»¡£
SQL> select date '0000-01-01' from dual;
DATE'0000-01-01'
----------------
0/0/0000
SQL> select date '0000-11-22' from dual;
DATE'0000-11-22'
----------------
0/0/0000
ÔÚʹÓÃdate¹Ø¼ü×Öʱ£¬Ê±¼ä¸ñʽÊÇÂÞÂí¸ñʽ¡£´Ëʱ£¬ÎÒÃÇ·¢ÏÖOracleûÓжÔÄê·ÝÊÇ·ñΪ0½øÐÐУÑé¡£²¢ÇÒ£¬Ö»ÒªÄê·ÝΪ0£¬Êý¾Ý¶¼»á±»×ª±äΪ'0000/00/00'¡£
ÔÙ¿´ÁíÍâÒ»ÖÖÇé¿ö£¬
SQL> select to_date('0001-01-01', 'yyyy-mm-dd')-365 from dual;
TO_DATE('0001-01-01','YYYY-MM-
------------------------------
0/0/0000
SQL> select to_date('0001-01-01', 'yyyy-mm-dd')-360 from dual;
TO_DATE('0001-01-01','YYYY-MM-
------------------------------
0/0/0000
¿ÉÒÔ¿´µ½£¬Oracle¶Ôʱ¼ä±í´ïʽµÄ½á¹ûҲûÓÐУÑéÄê·ÝÊÇ·ñΪ0£¬½áºÏÉÏÃæµÄbug£¬Ö»Òª¼ÆËã½á¹ûÄê·ÝΪ0£¬ÎÞÂÛÔ¡¢ÈÕÊýÖµ£¬½á¹û¶¼Îª'0000/00/00'¡£
ÔÙ¿´µÚÈýÖÖÇé¿ö£¬¾Í¸ü¼ÓÌØÊâÁË£ºÖ»Òª¶Ô100µ½1500ÄêÖ®ÄÚµÄËùÓÐÕû°ÙÄêµÄÈÕÆÚ½øÐмÆË㣬Èç¹û½á¹ûΪ2ÔÂ29µÄ»°£¬½á¹û¶¼Îª'0000/00/00'¡£
SQL> select date '0099-2-28' +1 from dual;
DATE'0099-2-28'+1
-----------------
3/1/0099
SQL> select date '0100-2-28' +1 from dual;
DATE'0100-2-28'+1
Ïà¹ØÎĵµ£º
1. SQL Óï¾äÓëSQL*Plus ÃüÁî
SQL
SQL*Plus
Ò»ÖÖÓïÑÔ
Ò»ÖÖ»·¾³
ANSI±ê×¼
Oracle µÄÌØÐÔÖ®Ò»
¹Ø¼ü×Ö²»ÄÜËõд
¹Ø¼ü×Ö¿ÉÒÔËõд
ʹÓÃÓï¾ä¿ØÖÆÊý¾Ý¿âÖеıíµÄ¶¨ÒåÐÅÏ¢
ºÍ±íÖеÄÊý¾Ý
ÃüÁî²»ÄܸıäÊý¾Ý¿âÖеÄÊý¾ÝµÄÖµ
¼¯ÖÐÔËÐÐ
2.ÒÔϼ¸¸ö²éѯºÜÖØÒª£¬×ÐϸÌå»á
1 (ÓÐÔ±¹¤µÄ³ ......
¸Õ¸ÕÔÚinthirtiesÀÏ´óµÄ²©¿ÍÀï¿´µ½ÕâÆªÎÄÕ£¬Ð´µÄ²»´í£¬ÕýºÃ×Ô¼º×î½üÔÚѧϰPL/SQL£¬×ª¹ýÀ´Ñ§Ï°Ñ§Ï°¡£
==================================================================================
bulk collectÊÇ¿ÉÒÔ¿´×öÊÇÒ»ÖÖÅú»ñÈ¡µÄ·½Ê½£¬ÔÚÎÒÃǵÄplsqlµÄ´úÂë¶ÎÀï¾³£×÷ΪintoµÄÀ©Õ¹À´Ê¹Ó᣶ÔÓÚselect id into v from ... ......
Oracle×Ô8iÆð¾ÍÈ«ÃæÖ§³Öjava£¬µ«¸÷¸ö°æ±¾µÄoracleÖÐĬÈÏjdk°æ±¾¾ù²»Ïàͬ£¬oracle8iÖÐΪ jdk1.2,oracle9iÖÐΪjdk1.3,oracle10gÖÐΪjdk1.4~~ÖÁ±ÊÕßÐÐΪ֮¼Ê£¬µ±Ç°µÄ×îа汾Ϊjdk1.5 update 11.
Òò±ÊÕßjava¿ª·¢³öÉí£¬ÔÚ×öoracle¿ª·¢Öо³£»áÓÃjavaÀ´À©Õ¹ oracle¹¦ÄÜ£¬µ«ÊÇÓÉÓÚoracle×Ô´øjdk°æ±¾¹ýµÍ£¬¿ÉÄÜ»áÔì³ÉһЩ ......
DML:Data Manipulation Language Êý¾Ý²Ù×÷ÓïÑÔ
°üÀ¨£ºCRUD
1. insertÓï¾ä
(1) ´ÓÆäËü±íÖи´ÖÆÊý¾Ý,ʵÏÖ·½·¨:ÔÚinsert Óï¾äÖмÓÈë²éѯÓï¾ä
insert into sales_reps(id,name,salary,commission_pct) select employee_id,last_name,salary,commission_pct
from employees where job_id like '%rep';
(2) up ......
ÒÔÉÏÎª×ªÔØ,¶àÊý²¢Î´ÑéÖ¤.
ÆäÖÐ,select trunc(sysdate,'dd') from dual,µÃµ½µÄÊÇ: 2009-3-23 ÉÏÎç12:00:00 ,ÓëÏÂÎIJ¢²»Ò»Ñù!
oracle trunc()º¯ÊýµÄÓ÷¨
1.TRUNC(for dates)
TRUNCº¯ÊýΪָ¶¨ÔªËضø½ØÈ¥µÄÈÕÆÚÖµ¡£
Æä¾ßÌåµÄÓï·¨¸ñʽÈçÏ£º
TRUNC£¨date[,fmt]£©
ÆäÖУº
date Ò»¸öÈÕÆÚÖµ
fmt ÈÕÆÚ¸ñʽ£¬¸ÃÈÕÆÚ½« ......