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