GreenPlum中自定义时间转换函数

最近数据库架构调整,一部分业务从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
时间: 2024-10-12 15:10:21

GreenPlum中自定义时间转换函数的相关文章

GreenPlum中自定义分区维护函数

GreenPlum中的分区表在数据量较大的情况下对于提升查询性能的帮助非常的,但是GreenPlum本身并没有提供分区表自动维护的工具,这里我们利用GreenPlum的PL/SQL自定义两个分区表自动维护的存储过程(也可以成为函数). 创建存储过程之前首先要创建一个记录分区表详细信息的视图,这里可以参见上篇博文.由于业务中有多张表需要做分区,而且分区字段的类型并不一样,因此我们首先创建一张字典表,记录每张表的分区类型,如下: CREATE TABLE op_tb_partition (   tb

C语言中关于时间的函数

C语言中关于时间的函数 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,南平私家侦探(http://user.qzone.qq.com/778607337)并对计时.时间的获取.时间的计算和显示格式等方面进行了阐述.本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法. 关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元) 注:linux系统时间如

ORACLE函数之日期时间转换函数

 1.          TO_CHAR 语法:TO_CHAR(X [,format]) 说明:将X按format格式转换成字符串.X是一个日期或者数字,format是一个规定了X采用何种格式转换的格式字符串 举例: SQL>SELECT TO_CHAR(sysdate,'YYYY-MM-DD hh24:mi:ss') A FROM DUAL; A ------------------- 2014-06-1815:58:43 2.            TO_DATE 语法:TO_DATE(

sql点滴42—mysql中的时间转换

UNIX时间戳转换为日期用函数: FROM_UNIXTIME() select FROM_UNIXTIME(1156219870); 日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP() Select UNIX_TIMESTAMP(’2006-11-04 12:23:00′); 例:mysql查询当天的记录数: $sql=”select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),’%Y-%m-%d’) = DA

postgres时间转换函数

函数 返回类型 描述 例子 to_char(timestamp, text) text 把时间戳转换成字串 to_char(current_timestamp, 'HH12:MI:SS') to_char(interval, text) text 把时间间隔转为字串 to_char(interval '15h 2m 12s', 'HH24:MI:SS') to_char(int, text) text 把整数转换成字串 to_char(125, '999') to_char(double pre

mysql中获取时间的函数

今天做项目,有一个获取七天前日期的数据的一个需求.然后就百度mysql中关于时间的函数.收集了一些.现记录如下: 参考地址:http://www.w3school.com.cn/sql/sql_dates.asp -- 获取当前时间SELECT NOW() SELECT CURDATE()SELECT CURRENT_DATE()SELECT CURRENT_TIME()SELECT CURRENT_TIMESTAMP()SELECT CURTIME() -- DATE_SUB() 函数从日期减

Mysql日期转换函数、时间转换函数

Mysql日期转换函数.时间转换函数 一.MySQL 获得当前日期时间 函数 1,获得当前日期+时间(date + time)函数:now(): select now(); 结果:2008-08-08 22:20:46 2,获得当前日期+时间(date + time)函数:sysdate()sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值: select sysdate(); 结果:2008-08

Python中进制转换函数的使用

Python中进制转换函数的使用 关于Python中几个进制转换的函数使用方法,做一个简单的使用方法的介绍,我们常用的进制转换函数常用的就是int()(其他进制转换到十进制).bin()(十进制转换到二进制).oct()(十进制转换到八进制).hex()(十进制转换到十六进制). 下面我们逐个说下每个函数的用法. bin bin()函数,是将十进制的数字转换成二进制的数字.其中bin()函数中传入的是十进制的数字,数据类型为数字类型. v = 18 num = bin(v) print(num)

mysql 时间转换函数

UNIX_TIMESTAMP    "2009-09-15 00:00:00"转化为列为长整型的函数 select unix_timestamp("2013-03-15 00:00:00")*1000, 这里要注意,mysql数据库中的长整型,比java中的长整型少了秒后面的毫秒数,所以要乘以1000,这样只有几毫秒之差 FROM_UNIXTIME    "1252999488000"(java中的long型数据)转化为日期 select fro