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報錯問題
polardb執(zhí)行
oracle執(zhí)行
報錯信息需要類型轉(zhuǎn)換,那就轉(zhuǎn)換一下
告知開發(fā)側(cè)看能否更改代碼解決。
過了一會,開發(fā)發(fā)來截圖,一個模塊就有400多,工作量太大,影響進度,看來還得換其他辦法。
先看看查詢實現(xiàn)原理:
1.trunc后返回類型是timestampwithout time zone
2.兩個相減返回值interval類型
3.查看to_char輸入和輸出返回類型
通過上面3步可以明確知道之前修改新加DD實現(xiàn)的邏輯,但是應用側(cè)整改工作量太大,不現(xiàn)實。
既然第3步工作量大,實現(xiàn)不了,那就在第1步或第2步上做做文章。
嘗試修理第2步:
減號-的左右都是timestampwithout time zone,返回值類型就是interval
到這就明了了,自己定義一個函數(shù)timestamp_mi,讓他返回值不是interval,而是text就ok啦。
下面開始解決問題:
1.日期格式相減功能實現(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)建上面實現(xiàn)功能的sql對應的函數(shù)
語法如下:
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)建新的運算符實現(xiàn)邏輯
createoperator ywjhxt.-(leftarg=timestamp without timezone,rightarg=timestamp without timezone,procedure=ywjhxt.timestamp_mi);
4.檢驗是否實現(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;
原來有兩個timestampwithout time zone的值進行相減時,有兩個實現(xiàn)方式,為啥他選了第一個呢?
嘗試去官方文檔找答案,還真有。。。
再嘗試一下,發(fā)現(xiàn)得到了想要的結(jié)果,但是這不符合需要啊,還是要改動應用代碼。
繼續(xù)往下翻文檔,又有驚喜。
setsearch_path="$user", public,pg_catalog;
至此,問題徹底解決。本次分享到此結(jié)束,下次再見。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/130154.html
摘要:李飛飛花名飛刀,阿里巴巴集團副總裁,高級研究員,達摩院首席數(shù)據(jù)庫科學家,阿里云智能事業(yè)群數(shù)據(jù)庫產(chǎn)品事業(yè)部負責人,杰出科學家。是阿里云的云原生數(shù)據(jù)庫,目前已有非常深厚的技術(shù)積累。 阿里妹導讀:云計算大潮來襲,傳統(tǒng)數(shù)據(jù)庫市場正面臨重新洗牌的情境,包括云數(shù)據(jù)庫在內(nèi)的一批新生力量崛起,動搖了傳統(tǒng)數(shù)據(jù)庫的壟斷地位,而由云廠商主導的云原生數(shù)據(jù)庫則將這種改變推向了高潮。 云時代的數(shù)據(jù)庫將面臨怎樣的...
摘要:近日,阿里云正式對外發(fā)布了全新一代自研關系型數(shù)據(jù)庫。而他認為,在未來年內(nèi),沒有自研數(shù)據(jù)庫的云計算廠商將會被逐漸淘汰出局。 近日,阿里云正式對外發(fā)布了全新一代自研關系型數(shù)據(jù)庫POLARDB。值得注意的是,POLARDB并不是基于開源數(shù)據(jù)庫MySQL之上研發(fā)的分支,而且基于第三代分布式共享存儲架構(gòu),創(chuàng)新實現(xiàn)企業(yè)級OLTP與OLAP一體化數(shù)據(jù)庫系統(tǒng)整體設計。這意味著,在行業(yè)還在使用第一代,第二代架...
摘要:本文整理了年月國產(chǎn)數(shù)據(jù)庫大事件和重要產(chǎn)品發(fā)布消息。柏睿數(shù)據(jù)庫加速安全卡面向全球重磅發(fā)布。月日,在全球數(shù)字經(jīng)濟大會成果發(fā)布會上,中國移動北京分公司與國產(chǎn)數(shù)據(jù)庫領域新銳企業(yè)柏睿數(shù)據(jù)簽署戰(zhàn)略合作協(xié)議。本次大賽主要面向全國愛好數(shù)據(jù)庫的高校學生。 本文整理了2021年8月國產(chǎn)數(shù)據(jù)庫大事件和重要產(chǎn)品發(fā)布消息。目錄8月國產(chǎn)數(shù)據(jù)庫大事記TOP108月國產(chǎn)數(shù)據(jù)庫大事記時間線產(chǎn)品/版本發(fā)布兼容認證8月排行榜新增...
摘要:不過,云來了,以阿里云為代表的云服務商攜云原生數(shù)據(jù)庫發(fā)起了新一輪挑戰(zhàn)。實際上,阿里云數(shù)據(jù)庫技術(shù)也得到國際咨詢機構(gòu)的認可,在數(shù)據(jù)庫魔力象限中,阿里云成為國內(nèi)首個入選的科技公司。第三個是數(shù)據(jù)的安全隱私保護,這是阿里云數(shù)據(jù)庫一直不敢放松的。數(shù)據(jù)庫市場形成今天的格局已經(jīng)很久了,商業(yè)數(shù)據(jù)庫為王,這幾乎沒有變過。不過,云來了,以AWS、阿里云為代表的云服務商攜云原生數(shù)據(jù)庫發(fā)起了新一輪挑戰(zhàn)。與以往歷次的挑...
摘要:近日,阿里云正式對外發(fā)布了全新一代自研關系型數(shù)據(jù)庫。而他認為,在未來年內(nèi),沒有自研數(shù)據(jù)庫的云計算廠商將會被逐漸淘汰出局。 近日,阿里云正式對外發(fā)布了全新一代自研關系型數(shù)據(jù)庫POLARDB。值得注意的是,POLARDB并不是基于開源數(shù)據(jù)庫MySQL之上研發(fā)的分支,而且基于第三代分布式共享存儲架構(gòu),創(chuàng)新實現(xiàn)企業(yè)級...
閱讀 1353·2023-01-11 13:20
閱讀 1699·2023-01-11 13:20
閱讀 1211·2023-01-11 13:20
閱讀 1904·2023-01-11 13:20
閱讀 4161·2023-01-11 13:20
閱讀 2751·2023-01-11 13:20
閱讀 1397·2023-01-11 13:20
閱讀 3664·2023-01-11 13:20