DB2 DATE 函式的使用乙個陷阱

2021-07-12 03:09:05 字數 711 閱讀 5490

1)date 函式正確使用的話

select date('2010-05-19') from sysibm.sysdummy1;或者使用 values date('2010-05-19')

結果:*****=

2010-05-19

這個是預期得到想要得到的結果

2)如果在date 函式中忘掉單引號的話,結果就會出錯

select date(2010-05-19) from sysibm.sysdummy1;或者使用 values date(2010-05-19)

結果:*****=

0006-06-09

顯然這不是預期想要的結果。

為什麼會產生這麼大的差距呢?

原因是因為當 date 函式得到了乙個字串作為輸入引數的時候,它會假定這是乙個有效的 db2 日期的表示,並對其進行適當地轉。

反之相反,當輸入引數是數字型別時,函式會假定該引數值減 1 等於距離公元第一天(0001-01-01)的天數

2010-5-19-1=1985 單位是天 然後計算距離公元第一天(0001-01-01)之後1985天是那一年 ,所以得出的結果是0006-06-09。

所以我前面有篇文章「mybatis中#和$」中有個例子,如果不加單引號會得到錯誤結果,如下所示!!!

DB2 DATE 函式的使用乙個陷阱

db2 date 函式的使用乙個陷阱 1 date 函式正確使用的話 select date 2010 05 19 from sysibm.sysdummy1 或者使用 values date 2010 05 19 結果 2010 05 19 這個是預期得到想要得到的結果 2 如果在date 函式中...

DB2 中很有幫助的乙個函式 replace

values char replace abcd a opmn 返回的結果就是opmnbcd update act set actdesc replace actdesc,d w where actno 70 這個函式的運用關鍵之處是區分大小寫,字串之間不能有任何的空格 否則是不能替換的。切忌 db...

DB2中建立乙個返回結果集的函式

建立函式 create function f test returns table din code varchar 150 din name varchar 150 din pcode varchar 150 din code1 varchar 150 din name1 varchar 150 ...