org.springframework.jdbc.BadSqlGrammarException:PreparedStatementCallback;
badSQL grammar [SELECT TO_CHAR(TRUNC(SYSDATE,dd)-TRUNC(op_time,dd))overday FROM tb_xxx_xxxx WHERE caseno=? ];
nestedexception is com.aliyun.polardb.util.PSQLException:
ERROR:function to_char(interval) does not exist
Hint:No function matches the given name and argument types. You might needto add explicit type casts.
--直連檢查sql報(bào)錯(cuò)問題
polardb執(zhí)行
oracle執(zhí)行
報(bào)錯(cuò)信息需要類型轉(zhuǎn)換,那就轉(zhuǎn)換一下
告知開發(fā)側(cè)看能否更改代碼解決。
過了一會(huì),開發(fā)發(fā)來(lái)截圖,一個(gè)模塊就有400多,工作量太大,影響進(jìn)度,看來(lái)還得換其他辦法。
先看看查詢實(shí)現(xiàn)原理:
1.trunc后返回類型是timestampwithout time zone
2.兩個(gè)相減返回值interval類型
3.查看to_char輸入和輸出返回類型
通過上面3步可以明確知道之前修改新加DD實(shí)現(xiàn)的邏輯,但是應(yīng)用側(cè)整改工作量太大,不現(xiàn)實(shí)。
既然第3步工作量大,實(shí)現(xiàn)不了,那就在第1步或第2步上做做文章。
嘗試修理第2步:
減號(hào)-的左右都是timestampwithout time zone,返回值類型就是interval
到這就明了了,自己定義一個(gè)函數(shù)timestamp_mi,讓他返回值不是interval,而是text就ok啦。
下面開始解決問題:
1.日期格式相減功能實(shí)現(xiàn)的sql
SELECT(date_part(epoch,sysdate)-date_part(epoch,sysdate-10))/86400,pg_typeof(date_part(epoch,sysdate)-date_part(epoch,sysdate-10)/86400);
2.創(chuàng)建上面實(shí)現(xiàn)功能的sql對(duì)應(yīng)的函數(shù)
語(yǔ)法如下:
createor replace function ywjhxt.timestamp_mi (timestamp without time zone,timestamp without time zone) returns double precision as $$
SELECT(date_part(epoch,$1)-date_part(epoch,$2))/86400;
$$language sql;
3.創(chuàng)建新的運(yùn)算符實(shí)現(xiàn)邏輯
createoperator ywjhxt.-(leftarg=timestamp without timezone,rightarg=timestamp without timezone,procedure=ywjhxt.timestamp_mi);
4.檢驗(yàn)是否實(shí)現(xiàn)功能
5.意外情況處理
奇了怪了,為啥沒生效。繼續(xù)分析,
查看操作符’-’信息:
selectoprname,oprleft::regtype,oprright::regtype,oprresult::regtype,oprcodefrom pg_operator where oprname=- andoprleft::regtype::text=timestamp without time zone andoprright::regtype::text=timestamp without time zone;
原來(lái)有兩個(gè)timestampwithout time zone的值進(jìn)行相減時(shí),有兩個(gè)實(shí)現(xiàn)方式,為啥他選了第一個(gè)呢?
嘗試去官方文檔找答案,還真有。。。
再嘗試一下,發(fā)現(xiàn)得到了想要的結(jié)果,但是這不符合需要啊,還是要改動(dòng)應(yīng)用代碼。
繼續(xù)往下翻文檔,又有驚喜。
setsearch_path="$user", public,pg_catalog;
至此,問題徹底解決。本次分享到此結(jié)束,下次再見。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/130154.html
摘要:李飛飛花名飛刀,阿里巴巴集團(tuán)副總裁,高級(jí)研究員,達(dá)摩院首席數(shù)據(jù)庫(kù)科學(xué)家,阿里云智能事業(yè)群數(shù)據(jù)庫(kù)產(chǎn)品事業(yè)部負(fù)責(zé)人,杰出科學(xué)家。是阿里云的云原生數(shù)據(jù)庫(kù),目前已有非常深厚的技術(shù)積累。 阿里妹導(dǎo)讀:云計(jì)算大潮來(lái)襲,傳統(tǒng)數(shù)據(jù)庫(kù)市場(chǎng)正面臨重新洗牌的情境,包括云數(shù)據(jù)庫(kù)在內(nèi)的一批新生力量崛起,動(dòng)搖了傳統(tǒng)數(shù)據(jù)庫(kù)的壟斷地位,而由云廠商主導(dǎo)的云原生數(shù)據(jù)庫(kù)則將這種改變推向了高潮。 云時(shí)代的數(shù)據(jù)庫(kù)將面臨怎樣的...
摘要:近日,阿里云正式對(duì)外發(fā)布了全新一代自研關(guān)系型數(shù)據(jù)庫(kù)。而他認(rèn)為,在未來(lái)年內(nèi),沒有自研數(shù)據(jù)庫(kù)的云計(jì)算廠商將會(huì)被逐漸淘汰出局。 近日,阿里云正式對(duì)外發(fā)布了全新一代自研關(guān)系型數(shù)據(jù)庫(kù)POLARDB。值得注意的是,POLARDB并不是基于開源數(shù)據(jù)庫(kù)MySQL之上研發(fā)的分支,而且基于第三代分布式共享存儲(chǔ)架構(gòu),創(chuàng)新實(shí)現(xiàn)企業(yè)級(jí)OLTP與OLAP一體化數(shù)據(jù)庫(kù)系統(tǒng)整體設(shè)計(jì)。這意味著,在行業(yè)還在使用第一代,第二代架...
摘要:本文整理了年月國(guó)產(chǎn)數(shù)據(jù)庫(kù)大事件和重要產(chǎn)品發(fā)布消息。柏睿數(shù)據(jù)庫(kù)加速安全卡面向全球重磅發(fā)布。月日,在全球數(shù)字經(jīng)濟(jì)大會(huì)成果發(fā)布會(huì)上,中國(guó)移動(dòng)北京分公司與國(guó)產(chǎn)數(shù)據(jù)庫(kù)領(lǐng)域新銳企業(yè)柏睿數(shù)據(jù)簽署戰(zhàn)略合作協(xié)議。本次大賽主要面向全國(guó)愛好數(shù)據(jù)庫(kù)的高校學(xué)生。 本文整理了2021年8月國(guó)產(chǎn)數(shù)據(jù)庫(kù)大事件和重要產(chǎn)品發(fā)布消息。目錄8月國(guó)產(chǎn)數(shù)據(jù)庫(kù)大事記TOP108月國(guó)產(chǎn)數(shù)據(jù)庫(kù)大事記時(shí)間線產(chǎn)品/版本發(fā)布兼容認(rèn)證8月排行榜新增...
摘要:不過,云來(lái)了,以阿里云為代表的云服務(wù)商攜云原生數(shù)據(jù)庫(kù)發(fā)起了新一輪挑戰(zhàn)。實(shí)際上,阿里云數(shù)據(jù)庫(kù)技術(shù)也得到國(guó)際咨詢機(jī)構(gòu)的認(rèn)可,在數(shù)據(jù)庫(kù)魔力象限中,阿里云成為國(guó)內(nèi)首個(gè)入選的科技公司。第三個(gè)是數(shù)據(jù)的安全隱私保護(hù),這是阿里云數(shù)據(jù)庫(kù)一直不敢放松的。數(shù)據(jù)庫(kù)市場(chǎng)形成今天的格局已經(jīng)很久了,商業(yè)數(shù)據(jù)庫(kù)為王,這幾乎沒有變過。不過,云來(lái)了,以AWS、阿里云為代表的云服務(wù)商攜云原生數(shù)據(jù)庫(kù)發(fā)起了新一輪挑戰(zhàn)。與以往歷次的挑...
摘要:近日,阿里云正式對(duì)外發(fā)布了全新一代自研關(guān)系型數(shù)據(jù)庫(kù)。而他認(rèn)為,在未來(lái)年內(nèi),沒有自研數(shù)據(jù)庫(kù)的云計(jì)算廠商將會(huì)被逐漸淘汰出局。 近日,阿里云正式對(duì)外發(fā)布了全新一代自研關(guān)系型數(shù)據(jù)庫(kù)POLARDB。值得注意的是,POLARDB并不是基于開源數(shù)據(jù)庫(kù)MySQL之上研發(fā)的分支,而且基于第三代分布式共享存儲(chǔ)架構(gòu),創(chuàng)新實(shí)現(xiàn)企業(yè)級(jí)...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20