你好,Oracle中日期類型是date類型,sql語句中是區(qū)分類型的,也就是說雖然形勢上'2012-12-21'是一個日期,但是它在Oracle中卻是實實在在的字符串類型,所以不能插入到date類型的字段里,解決方法就是將日期字符串轉(zhuǎn)換成date類型就可以了,這里可以使用to_date函數(shù),如:
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、蕉城網(wǎng)絡(luò)推廣、微信平臺小程序開發(fā)、蕉城網(wǎng)絡(luò)營銷、蕉城企業(yè)策劃、蕉城品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供蕉城建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:www.chinadenli.net
insert into tablename (date_column) values(to_date('2012-12-21','yyyy-mm-dd') )。
to_date里需要兩個參數(shù),第一個是日期字符串,可以在程序中拼好(Java或者其他高級程序語言想實現(xiàn)這一點都是很容易的);第二個參數(shù)是日期的格式,'yyyy-mm-dd'的意思是想要4位的年份,兩位的月份(比方說如果為2,則保存為:02)和兩位的日期(這個意義和月份相同,假如為4號,則保存為04)。如果想要其他的格式或者想插入具體的時分秒時間都是可以的,比如:
to_date('2012-12-21 12:12:12','yyyy-mm-dd hh24:mi:ss')后邊的24代表使用24時制時間。夠明白吧!
這個問題在項目中是一個很重要的細(xì)節(jié),具體有兩種處理方式,主要取決于這個表是否需要進(jìn)行數(shù)據(jù)交換,以及這個時間字段如何使用,具體舉兩個例子吧:
一、使用varchar2型
1、如果這張表對時間的精度要求不高,比如只是到日。
2、該表需要經(jīng)常與其他表進(jìn)行數(shù)據(jù)交互,比較,查詢,并且其他表的時間精度不高于日(比如日、月、季度)
3、存儲大量數(shù)據(jù)用于統(tǒng)計分析,如本期、同期,累計值等。
存儲的時候需要格式化,例如:to_char(sysdate,'yyyy-mm-dd');
二、使用date型。
1、對時間精度要求較高,比如到秒;
2、需要與其他表做數(shù)據(jù)交互,更偏重于”準(zhǔn)實時“交互,比如每15秒同步一次數(shù)據(jù);
3、不用于統(tǒng)計分析(這點很重要,需要統(tǒng)計分析的話,強(qiáng)烈不建議使用date型);
4、該表數(shù)據(jù)不做物理刪除(刪除時只更新標(biāo)志位和刪除時間);
以上我這幾年的實際項目經(jīng)驗,希望可以幫到你。
有幾周,把每個月的最后一天拼成串傳到如下SQL:
select to_char(to_date('20111031','yyyymmdd'),'w') from dual;
每周日期段沒找到直接的,可以自己寫個函數(shù):
1、獲取1號是周幾,如周4;
2、則1-4號為第一周,即1號+(7-4)天=4號;
3、循環(huán):4+1=5號——4+7=11號為第二周;
直到:某周加完后的日期,大于該月的最大天數(shù),則取該月最大天數(shù)收尾,循環(huán)結(jié)束;
第二種方法是你建個存日期的表:
date week
……
20110101
20110102
……
里面存N年的日期,然后根據(jù)
select to_char(to_date('20111031','yyyymmdd'),'w') from dual; 把week字段update進(jìn)去;
然后直接根據(jù)這張表寫SQL就直接獲取幾周,每周是幾號到幾號了。。。
create table xxx(id number,time date)
parttion by range(time)
(partion part1 values less than (to_date('2012-01-31','yyyy-mm-dd')) tablespace tb1,
partion part 2 vales less than(to_date('2012-01-31','yyyy-mm-dd')) tablespace tb2);
采用范圍分區(qū)(range partition)就可以。
最好還是重新創(chuàng)建一個新表,然后再將舊表數(shù)據(jù)導(dǎo)入到新表,最后刪掉舊表,并更改新表名稱。
(1)用dblink使你在這個數(shù)據(jù)庫可以查詢另一個數(shù)據(jù)庫的信息。注意,權(quán)限問題。包括用戶權(quán)限和查詢權(quán)限。
(2)看到你的顯示結(jié)果個人建議用union all來做,就是查出上表的全部數(shù)據(jù)并上下表E字段與上表E字段相同的字段,然后再排序(如果順序不重要也可以不排序)。左連接或者右連接的話前面要用case when判斷,而且似乎不可行,因為在上表E=a時g也顯示在I字段中,所以用union all似乎更加簡單一些。
分享名稱:關(guān)于oracle怎么拼月表的信息
當(dāng)前URL:http://www.chinadenli.net/article2/heihoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、微信小程序、服務(wù)器托管、響應(yīng)式網(wǎng)站、虛擬主機(jī)、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)