select to_date('20100105','YYYYMMDD')+rownum day_id from dual
創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、京山網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為京山等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
connect by rownumto_date('20100108','YYYYMMDD')-to_date('20100105','YYYYMMDD')
oracle 查詢?nèi)掌趨^(qū)間內(nèi)的數(shù)據(jù)一般最常用的就是between and 和=,=(或者不要等號)了;
舉例:select * from tablename t where t.日期列 between to_date('2015-10-20 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2015-10-20 23:59:59','yyyy-mm-dd hh24:mi:ss')
或者:
select * from tablename where t.日期列 = to_date('2015-10-20 00:00:00','yyyy-mm-dd hh24:mi:ss') and t.日期列 = to_date('2015-10-20 23:59:59','yyyy-mm-dd hh24:mi:ss')
如果要查詢開區(qū)間的數(shù)據(jù)只需將= 和=改為和就行。
1 條件是獲取當(dāng)前日期的前90天到前60的數(shù)據(jù)
2 條件語句為:and 表名.字段名 between to_date(to_char(sysdate-89,'yyyy-MM-dd'),"yyyy-MM-dd") and to_date(to_char(sysdate-59,'yyyy-MM-dd'),"yyyy-MM-dd")
3 知識點(diǎn):Oracle to_date() 與 to_char() 日期和字符串轉(zhuǎn)換
1、to_date("要轉(zhuǎn)換的字符串","轉(zhuǎn)換的格式") 兩個(gè)參數(shù)的格式必須匹配,否則會報(bào)錯(cuò)。即按照第二個(gè)參數(shù)的格式解釋第一個(gè)參數(shù)。
2、to_char(日期,"轉(zhuǎn)換格式" ) 即把給定的日期按照“轉(zhuǎn)換格式”轉(zhuǎn)換。
3、轉(zhuǎn)換的格式:
表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位數(shù)表示年
表示month的:mm 用2位數(shù)字表示月;mon 用簡寫形式 比如11月或者nov ;month 用全稱 比如11月或者november
表示day的:dd 表示當(dāng)月第幾天;ddd表示當(dāng)年第幾天;dy 當(dāng)周第幾天 簡寫 比如星期五或者fri;day當(dāng)周第幾天 全寫比如星期五或者friday。
表示hour的:hh 2位數(shù)表示小時(shí) 12進(jìn)制; hh24 2位數(shù)表示小時(shí) 24小時(shí)
表示minute的:mi 2位數(shù)表示分鐘
表示second的:ss 2位數(shù)表示秒 60進(jìn)制表示季度的:q 一位數(shù) 表示季度 (1-4)
另外還有ww 用來表示當(dāng)年第幾周 w用來表示當(dāng)月第幾周。
24小時(shí)制下的時(shí)間范圍:00:00:00-23:59:59
12小時(shí)制下的時(shí)間范圍:1:00:00-12:59:59比如:select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual //顯示:08-11-07 13:22:42select to_date('2005-12-25,13:25:59','yyyy-mm-dd,hh24:mi:ss') from dual //顯示:2005-12-25 13:25:59
而如果把上式寫作:select to_date('2005-12-25,13:25:59','yyyy-mm-dd,hh:mi:ss') from dual,則會報(bào)錯(cuò),因?yàn)樾r(shí)hh是12進(jìn)制,13為非法輸入,不能匹配。
Oracle查詢?nèi)掌诳梢允褂?
但是在等號的兩邊必須數(shù)據(jù)類型一致,比如'2010-9-19'這是一個(gè)字符串不能直接與日期類型字段比較
必須要進(jìn)行日期轉(zhuǎn)換:
1、日期轉(zhuǎn)換成字符串 to_char(date,'yyyy-mm-dd')='2009-09-19'
2、字符串轉(zhuǎn)成日期 to_date('2009-9-19','yyyy-mm-dd')=trunc(date)
日期本身可能會帶時(shí)分秒,需要注意
SELECT id FROM A WHERE TO_CHAR( date, 'YYYYMMDD' ) = TO_CHAR( SYSDATE, 'YYYYMMDD')
或者
SELECT id FROM A WHERE TRUNC( date, 'D' ) = TRUNC( SYSDATE, 'D' )
前者是通過格式化字符串處理, 后者是通過 日期截尾來處理。
1、創(chuàng)建測試表,
create table test_date(id varchar2(20),v_date date);
2、插入測試數(shù)據(jù);
insert into test_date select level, trunc(sysdate)+level v_date from dual connect by level=5
commit;
3、查詢表中全量數(shù)據(jù);select t.*, rowid from test_date t;
4、編寫語句,查詢時(shí)間等于當(dāng)前時(shí)間后兩天的記錄;
select t.*, rowid from test_date t where v_date = trunc(sysdate)+2;