最近数据库架构调整,一部分业务从MySQL迁移到GreenPlum上去,原来MySQL中自带有unix_timestamp和from_unixtime两个函数可以实现标准时间和UNIX时间的相互转换,翻了下GreenPlun的文档,没有发现有类似的函数,于是便使用python自定义了这两个函数,并在这两个函数的基础上实现了两个业务相关的函数,这里记录一下。
1、首先创建一个python language。 testdb=# create language plpythonu; CREATE LANGUAGE 2、创建unix_timestamp函数,将标准时间转换为UNIX时间 create or replace function unix_timestamp (timestamp_minutes timestamp) returns float as $$ import time return time.mktime(time.strptime(timestamp_minutes, ‘%Y-%m-%d %H:%M:%S‘)) $$ language plpythonu volatile security definer; 3、创建from_unixtime函数,将UNIX时间转换为标准时间 create or replace function from_unixtime (unix int) returns timestamp as $$ import time return time.strftime(‘%Y-%m-%d %H:%M:%S‘, time.localtime(unix)) $$ language plpythonu volatile security definer; 4、创建业务相关的函数nl_to_timestamp,将标准时间转换为UNIX时间 create or replace function nl_to_timestamp (timestamp_minutes timestamp) returns float as $$ select (floor(unix_timestamp($1) / 60) - 22616640) as unixtime $$ language sql; 5、创建业务相关的函数nl_to_date,将UNIX时间转换为标准时间 create or replace function nl_to_date (timestamp_minutes int) returns timestamp as $$ select from_unixtime(($1 + 22616640) * 60) as datetime $$ language sql; 6、GreenPlum中删除函数需要指定函数的参数类型 testdb=# drop function from_unixtime(int); DROP FUNCTION
本文出自 “勇敢向前,坚决向左” 博客,谢绝转载!
原文地址:http://quenlang.blog.51cto.com/4813803/1827046