天天看点

《卸甲笔记》-PostgreSQL和Oracle的SQL差异分析之五:函数的差异(七)

postgresql是世界上功能最强大的开源数据库,在国内得到了越来越多机构和开发者的青睐和应用。随着postgresql的应用越来越广泛,oracle向postgresql数据库的数据迁移需求也越来越多。数据库之间数据迁移的时候,首先是迁移数据,然后就是sql、存储过程、序列等程序中不同的数据库中数据的使用方式的转换。下面根据自己的理解和测试,写了一些sql以及数据库对象转换方面的文章,不足之处,尚请多多指教。

add_months(date,integer) 是oracle的一个时间运算函数。返回参数date日期的integer个月后的日期。是oracle日期运算的一个很基本的函数。

postgresql里面没有这个函数。可以使用interval数据类型的加减来模拟。返回的是一个timestamp的值。也可以自己创建函数来实现它。

last_day(date)函数是oracle的一个取日期的月末日的函数。

postgresql中没有对应的日期函数。可以自己使用interval来实现。也可以自己创建函数来实现。

months _between函数是oracle的一个判断两个日期之间有几个月的间隔的函数。

postgresql中也没有对应的函数,只能自己通过函数实现。不过由于对于相差月份的算法不一样,结果可能有些差异。下面给出一个例子。

extract是oracle用于从一个date、timestamp或者interval类型中截取到特定的部分所用的函数。oracle只支持截取年、月、日、时、分、秒,时区时,时区分、时区等。

postgresql也支持该函数, 截取的东西比oracle的多一些,但是不支持时区时,时区分和时区的截取(文档中说是支持的,但是我的实际测试中不支持)。