create 或是replace function trunc (p_timestamp timestamp  with time 区,p_formart varchar default ‘弟弟’) ,returns timestamp  without time  zone $ $ 声明 ,v_timestamp timestamp :=,空; ,v_formart varchar(10),:=,上层(p_formart); 开始 ,/* ,*函数功能:对日期值进行格式化 *大敌;参数说明: ,*,,P_TIMESTAMP (,需要格式话的日期值,) ,*,,P_FORMART , (, YYYY:年第一天;,MM | |月MON | RM:月第一天,,,空| DD:当日;,D:当前周第一天,,,....) ,*返回格式:YYYY-MM-DD HH24 (12): MI: SS (具体值由第二个参数决定) ,*/,if p_timestamp  is not  null 然后 if 才能;v_formart 拷贝(“YYYY”,“年”),然后 ,,,,当前年的第一天(YYYY-01-01 就是) ,,v_timestamp :=, date_trunc(‘年’,,p_timestamp); elsif 才能;v_formart 拷贝(“月”,“星期一”,,“毫米”,,“RM”),然后 ,,,,当前月第一天(YYYY-MM-01 就是) ,,v_timestamp :=, date_trunc(‘月’,,p_timestamp); elsif 才能;v_formart 拷贝(‘弟弟’,‘天’,,“DY”),然后 ,,,,当天(YYYY-MM-DD 就是) ,,v_timestamp :=, date_trunc(‘天’,,p_timestamp); elsif 才能;v_formart =' D ',然后 ,,,,当前周第一天(周日为第一天)(YYYY-MM-DD 就是) ,,v_timestamp :=, (date_trunc(‘周’,,p_timestamp),安康;区间,1天); elsif 才能;v_formart 拷贝(W1,,那,,“W3”,“W4”,“W5”,,“将”,“支W7”),然后 ,,,,当前周第几天(周日为第一天)(YYYY-MM-DD 就是) ,,v_timestamp :=, date_trunc(‘周’,,p_timestamp):: date +, substr (v_formart,, 2,, 1):: integer 作用;2; elsif 才能;v_formart  ~,”D \ + ^ ? [0 - 9] * $’, ,,,,当年第几天(YYYY-MM-DD 就是) ,,if substr (v_formart,, 2,,长度(v_formart) 1):: integer 结构;1,以及366年, ,,,v_timestamp :=, date_trunc(‘年’,,p_timestamp):: date +, substr (v_formart,, 2,,长度(v_formart) 1):: integer 作用;1; ,,,if date_trunc(‘年’,,v_timestamp):: date 祝辞,date_trunc(‘年’,,p_timestamp):: date 然后 ,,,,v_timestamp :=, date_trunc(‘年’,v_timestamp):: date 作用;间隔1,一天的; ,,,最终获得;如果; 其他的,, ,,,raise exception “u - 2001, [%], is not 识别只please enter “D (1 ~ 366)”,, p_formart; ,才能最终获得;如果; elsif 才能;v_formart 拷贝(HH,,“HH24”),然后 ,,v_timestamp :=, date_trunc(“小时”,p_timestamp); elsif 才能;v_formart =' HH12 ',然后 ,,v_timestamp :=, to_char (p_timestamp, yyyy-mm-dd hh22:00:00)::时间戳; elsif 才能;v_formart 拷贝(“分钟”,“小姐”),然后 ,,v_timestamp :=, date_trunc(“一分钟”,,p_timestamp); elsif 才能;v_formart =癈C”,然后 ,,v_timestamp :=, to_date ((trunc (date_part(‘年’,,p_timestamp)::整数/100)* 100 + 1)::varchar、,“yyyy”); elsif 才能;v_formart 拷贝(“帮助”,“?”),然后 ,,raise exception “u - 2001, please enter formart code 拷贝(,YYYY |年,月| |我的|毫米RM,, DD | | DY,, D, W (1 ~ 7), D (1 ~ 366), HH | HH24,, HH12,,分钟| MI,, CC )”; 其他的才能 ,,raise exception “u - 2001, [%], is not 识别只你还要try (帮助)的,,p_formart; 最终获得才能;如果; 其他的, v_timestamp 才能;:=,p_timestamp; ,最终获得;如果; ,return v_timestamp; 结束; $ $ ,language plpgsql; , ——,测试数据 select trunc(当前日期,D360),, trunc(当前日期,,' D '), trunc(当前日期,,W1);