Oracle常用的函式to date 用法

2021-08-30 03:34:17 字數 2714 閱讀 8087

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...