码迷,mamicode.com
首页 > 其他好文 > 详细

GreenPlum中自定义时间转换函数

时间:2016-07-17 02:25:40      阅读:2563      评论:0      收藏:0      [点我收藏+]

标签:greenplum unix时间转换

  最近数据库架构调整,一部分业务从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


本文出自 “勇敢向前,坚决向左” 博客,谢绝转载!

GreenPlum中自定义时间转换函数

标签:greenplum unix时间转换

原文地址:http://quenlang.blog.51cto.com/4813803/1827046

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!