1、採用「yyyy-mm-dd hh:mm:ssora 01810 格式作為格式進行轉換的弊端
在使用oracle的to_date函式來做日期轉換時,許多程式設計師會下意識的採用「yyyy-mm-dd hh:mm:ss」格式作為格式進行轉換,但是在oracle中會引起錯誤:「ora 01810 格式**出現兩次」。
示例:
select to_date('2005-01-01 13:14:20','yyyy-mm-dd hh24:mm:ss') from dual;
原因是sql中不區分大小寫,mm和mm被認為是相同的格式**,所以oracle的sql採用了mi代替分鐘。
select to_date('2005-01-01 13:14:20','yyyy-mm-dd hh24:mi:ss') from dual;
2、此外,我們還需要以24小時的形式顯示出要用的hh24
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;//mi是分鐘
select to_char(sysdate,'yyyy-mm-dd hh24:mm:ss') from dual;//mm會顯示月份
在實際的工作和學習中,為了分頁或查詢效能的需要,往往需要從資料庫查詢固定行數的記錄,不同的資料庫有不同的sql語句來完成,在oracle資料庫中,我們可以用下面的方法來實現,假設要從乙個有百萬條記錄的表中每次取10萬條進行處理,可以按下面步驟進行:
1、建立表
drop table vehicle;
create table vehicle (
make varchar2(256) not null,
model varchar2(256),
registration_no number(15) not null primary key,
age number(2,1) not null,
category varchar(1) not null,
milage number(15,2) not null,
last_service_date date not null
);2、插入資料
可以用入下儲存過程進行批量資料的插入,
( startnum in number, endnum in number) as
i number:=startnum;
j number:=endnum;
begin
dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') );
while i<=j loop
insert into
vehicle (registration_no,make,model,age,category,milage,last_service_date)
values
(i,'test','test',3,'a',1000,sysdate);
i:=i+1;
end loop;
dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') );
3、查詢固定行數的記錄
在oracle資料庫中需要結合rownum來完成,可以用如下方法來實現,如要取按rowid排序的5000到10000之間的記錄
select * from vehicle where rownum<10001 minus select * from vehicle where rownum<5001;
如果需要按照某欄位排序來查詢,如,按製造商make來排序,就需要用到子查詢,效能就會有明顯的影響
select * from (select * from vehicle order by make) where rownum<10001 minus select * from (select * from vehicle order by make) where rownum<5001;
由於你對rownum不能用像 where rownum >10 and rownum <100這樣的語法,所以有點彆扭,但是你可以通過以下方式來用:
select * from (select rownum r,registration_no,make,model,age,category,milage,last_service_date from vehicle) where r >=5000 and r<=10000;
或者 select * from (select rownum r,registration_no,make,model,age,category,milage,last_service_date from vehicle) where r between 5000 and 10000;
這樣就比較合符習慣了,不能用如下語句:
select * from (select * from vehicle order by make) where rownum between 5000 and 10000;
或者 select * from (select * from vehicle order by make) where rownum >= 5000 and rownum<=10000;
Oracle 常用的函式
常用的偽列有rowid和rownum select rowid,orders.from orders orders表的結果 create table orders c1 number 5 not null,c10 number 20 not null,c20 varchar2 20 not null...
Oracle常用的函式
1 判斷表是否存在 create or replace function public f is table exist v table en name character varying 8000 char returns integer as i count int default 0 begi...
Oracle常用的函式
1 把date資料轉為特定輸出型的字串 2 處理數字型資料 9相當於萬用字元 最終值是 日期 月數量,資料型別也是date型。一般月數量為負數,舉個例子 從employ表查詢列出來公司就職時間超過24年的員工名單,但是表中只有就職起始日期,所以需要用到這個函式了。select name,startd...