Oracle 系統時間 以及 取記錄條數

分組,取每組最大值:select DISTINCT pk_project,VFUNDSHY from (select pk_project ,VFUNDSHY,row_number() over (partition by pk_project
 order  by Vdef5 desc) a from PDATA.T09_XT_USEFUNDS T1 WHERE DR=0) WHERE A=1

系統時間:SYSDATE
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;


ORACLE裏獲取一個時間的年、季、月、周、日的函數
select to_char(sysdate, 'yyyy' ) from dual; --年


select to_char(sysdate, 'MM' ) from dual; --月
select to_char(sysdate, 'dd' ) from dual; --日
select to_char(sysdate, 'Q') from dual; --季
select to_char(sysdate, 'iw') from dual; --周--按日曆上的那種,每年有52或者53周




獲取系統日期: SYSDATE
  格式化日期:
TO_CHAR(SYSDATE,'YY/MM/DD HH24:MI:SS)
  或 TO_DATE(SYSDATE,'YY/MM/DD HH24:MI:SS)
   select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;
   select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;
   select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual
   select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh24:mi:ss') from dual
  而如果把上式寫作:
   select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh:mi:ss') from dual
  則會報錯,因爲小時hh是12進制,14爲非法輸入,不能匹配。
  轉換的格式:
  表示 year 的:
y 表示年的最後一位 、
  yy 表示年的最後2位 、
  yyy 表示年的最後3位 、
  yyyy 用4位數表示年
  表示month的:
mm 用2位數字表示月 、
  mon 用簡寫形式, 比如11月或者nov 、
  month 用全稱, 比如11月或者november
  表示day的:
dd 表示當月第幾天 、
  ddd 表示當年第幾天 、
  dy 當週第幾天,簡寫, 比如星期五或者fri 、
  day 當週第幾天,全稱, 比如星期五或者friday
  表示hour的:
hh 2位數表示小時 12進制 、
  hh24 2位數表示小時 24小時
  表示minute的:
mi 2位數表示分鐘
  表示second的:
ss 2位數表示秒 60進制
  表示季度的:
q 一位數 表示季度 (1-4)
  另外還有ww 用來表示當年第幾周 w用來表示當月第幾周。


  當前時間減去7分鐘的時間
   select sysdate,sysdate - interval '7' MINUTE from dual;
  當前時間減去7小時的時間
   select sysdate - interval '7' hour from dual;
  當前時間減去7天的時間
   select sysdate - interval '7' day from dual;
  當前時間減去7月的時間
   select sysdate,sysdate - interval '7' month from dual;
  當前時間減去7年的時間
   select sysdate,sysdate - interval '7' year from dual;
  時間間隔乘以一個數字
   select sysdate,sysdate - 8*interval '7' hour from dual;


select to_char(sysdate,'yyyy-mm-dd:hh24:mi:ss:pm:dy') from dual; 年月 日 24制小時 分 秒 上/下午 星期中文;
--獲取11月天數--select to_char(last_day(to_date('2010-11-1','YYYY-MM-DD')),'DD') from dual;
--獲取12月天數--select to_char(last_day(to_date('2010-12-1','YYYY-MM-DD')),'DD') from dual;
顯示上個禮拜一到禮拜日 SELECT to_char(SYSDATE,'yyyymmdd')-to_number(to_char(SYSDATE,'d')-1) - 6, to_char(SYSDATE,'yyyymmdd')-to_number(to_char(SYSDATE,'d')-1) from dual




取查詢結果的第n條數據:直接使用  rownum
select   *   from   table   where   rownum<20     
  minus     
  select   *   from   table   where   rownum<10     
  
//但這種查詢的效率更高於前者 (556436條數據,測試結果)  
select * from (select rownum r,a.* from blog a where rownum<=20) where r>=10;  
  
  
  
mysql> SELECT * FROM table LIMIT 5,10;  // 檢索記錄行 6-15  
  
//爲了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個參數爲 -1:   
mysql> SELECT * FROM table LIMIT 95,-1; // 檢索記錄行 96-last.  
  
//如果只給定一個參數,它表示返回最大的記錄行數目:   
mysql> SELECT * FROM table LIMIT 5;     //檢索前 5 個記錄行  
  
//換句話說,LIMIT n 等價於 LIMIT 0,n  
  
  
  
mysql limit查詢優化[轉載],由於limit經常用到,卻沒有注意,因爲平時做的項目都比較小,所以也沒有考慮去怎麼優化,今天看了一篇關於mysql limit優化的文章,感覺很好 於是轉載過來  
  
原文地址在這裏  
http://www.phpobject.net/blog/read.php?119  
  
MYSQL的優化是非常重要的。其他最常用也最需要優化的就是limit。mysql的limit給分頁帶來了極大的方便,但數據量一大的時候,limit的性能就急劇下降。  
       同樣是取10條數據  
  
select * from yanxue8_visit limit 10000,10        和  
  
   
  
select * from yanxue8_visit limit 0,10   
  
  
就不是一個數量級別的。  
  
    網上也很多關於limit的五條優化準則,都是翻譯自mysql手冊,雖然正確但不實用。今天發現一篇文章寫了些關於limit優化的,很不錯。原文地址:http://www.zhenhua.org/article.asp?id=200  
  
    文中不是直接使用limit,而是首先獲取到offset的id然後直接使用limit size來獲取數據。根據他的數據,明顯要好於直接使用limit。這裏我具體使用數據分兩種情況進行測試。(測試環境win2033+p4雙核 (3GHZ) +4G內存 mysql 5.0.19)  
  
1、offset比較小的時候。  
  
select * from yanxue8_visit limit 10,10   
  
  
   多次運行,時間保持在0.0004-0.0005之間  
  
Select * From yanxue8_visit Where vid >=(  
  
Select vid From yanxue8_visit Order By vid limit 10,1  
  
) limit 10   
  
  
  多次運行,時間保持在0.0005-0.0006之間,主要是0.0006  
 結論:偏移offset較小的時候,直接使用limit較優。這個顯然是子查詢的原因。  
  
  
2、offset大的時候。  
  
select * from yanxue8_visit limit 10000,10   
  
  
   多次運行,時間保持在0.0187左右  
  
Select * From yanxue8_visit Where vid >=(  
  
Select vid From yanxue8_visit Order By vid limit 10000,1  
  
) limit 10   
  
  
多次運行,時間保持在0.0061左右,只有前者的1/3。可以預計offset越大,後者越優。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章