postgresql 日期类型处理实践
---- 日期+1
select date '2018-01-14' + integer '1';
结果: 2018-01-15
---- 日期+1 后 转 20180101 日期字符串
select to_char(date '2018-01-14' + integer '1','yyyymmdd');
结果:20180114
---- 获取指定日期的周一日期
select to_char(date '2018-01-14' + integer '5' - (extract (dow from date '2018-01-14' + integer '5') - 1 || ' day')::interval,'yyyymmdd')
结果:20180115
--- 周"中文"
select case when extract (dow from date '2018-01-14' )=1 then '一'
when extract (dow from date '2018-01-14' )=2 then '二'
when extract (dow from date '2018-01-14' )=3 then '三'
when extract (dow from date '2018-01-14' )=4 then '四'
when extract (dow from date '2018-01-14' )=5 then '五'
when extract (dow from date '2018-01-14' )=6 then '六'
when extract (dow from date '2018-01-14' )=0 then '日'
else '' end
附使用函数生成一张日期数据表:
CREATE OR REPLACE FUNCTION "ext"."tmp_generate_date"()
RETURNS "pg_catalog"."void" AS $BODY$
declare runstr text;
strdate date;
strweekid text;
strweekstart text; -- 周开始第一天(周一)
strweek_zh text;
numb int :=1;
total int :=365;
begin WHILE numb < total LOOP execute 'select date ''2018-01-14'' + integer '''||numb::text||''';' into strdate; execute 'select week_id from ext.tmp_weekmapping where '''||to_char(strdate,'yyyy-mm-dd')||''' >= to_char(week_start,''yyyy-mm-dd'')
and
'''||to_char(strdate,'yyyy-mm-dd')||''' <= to_char(week_end,''yyyy-mm-dd'') limit 1;' into strweekid; execute 'select case when extract (dow from date '''||strdate||''')=1 then ''一''
when extract (dow from date '''||strdate||''')=2 then ''二''
when extract (dow from date '''||strdate||''')=3 then ''三''
when extract (dow from date '''||strdate||''')=4 then ''四''
when extract (dow from date '''||strdate||''')=5 then ''五''
when extract (dow from date '''||strdate||''')=6 then ''六''
when extract (dow from date '''||strdate||''')=0 then ''日''
else '''' end' into strweek_zh; execute '
select case when extract(dow from date '''||strdate||''')=0 then to_char(date '''||strdate||''' - integer '''',''yyyymmdd'')
else to_char(date '''||strdate||''' - (extract (dow from date '''||strdate||''') - 1 || '' day'')::interval,''yyyymmdd'') end
' into strweekstart; insert into ext.tmp_date_tag(ir_date,ir_idx,ir_day,ir_weeka,ir_weekb,ir_month,ir_year,ir_weekday,ir_weekt)
values(strdate,to_char(strdate,'yyyymmdd'),'D'||to_char(strdate,'yyyymmdd'),
'W'||strweekstart,'W'||strweekid,'M'||to_char(strdate,'yyyymm'),'Y'||to_char(strdate,'yyyy'),strweek_zh,strweekstart); numb:=numb+1; END LOOP; end
$BODY$
LANGUAGE 'plpgsql' VOLATILE COST 100
; ALTER FUNCTION "ext"."tmp_generate_date"() OWNER TO "execute_role";
结果数据表:

postgresql 日期类型处理实践的更多相关文章
- Python 标准类库-日期类型之datetime模块
标准类库-日期类型之datetime模块 by:授客 QQ:1033553122 可用类型 3 实践出真知 4 timedelta对象 4 class datetime.timedelta(da ...
- 18个Java8日期处理的实践,对于程序员太有用了!
18个Java8日期处理的实践,对于程序员太有用了! Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API. Java处理日期.日历和时间的方式一直为社区所 ...
- C# 把日期字符串转换为日期类型 (MM大写为月、小写为分钟)
string dtStr; DateTime dtTime; 尝试把时间字符串转为DateTime格式 if (DateTime.TryParse(dtStr, out dtTime)) { //st ...
- java mysql 日期类型
mysql(版本:5.1.50)的时间日期类型如下: datetime 8bytes xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00到9999-12-31 23:59: ...
- Java 基础【09】 日期类型
java api中日期类型的继承关系 java.lang.Object --java.util.Date --java.sql.Date --java.sql.Time --java.sql.Time ...
- SpringMVC对日期类型的转换
在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置. 1.如果查询类使我们自己写,那么在属性前面加上@Date ...
- spring mvc 注解访问控制器以及接收form数据的方式,包括直接接收日期类型及对象的方法
Spring 中配置扫描器 <!-- springmvc的扫描器--> <context:component-scan base-package="com.beifeng. ...
- excel转换日期格式,将yyyymmdd类型日期转换成yyyy-mm-dd等日期类型方法
源数据日期格式:例如: 20160420 20160422 目标日期格式类型: 2016-4-20 2016-4-22 或 2016/04/20 2016/04/22 方法: 一.选中相应数据的单元格 ...
- C# 字符串string类型转换成DateTime类型 或者 string转换成DateTime?(字符串转换成可空日期类型)
在c#中,string类型转换成DateTime类型是经常用到的,作为基本的知识,这里在此做个小结.一般来说可以使用多种方法进行转换,最常用的就是使用Convert.ToDateTime(string ...
随机推荐
- 高质量C++C编程指南笔记 标签: c++笔记 2015-11-22 20:59 179人阅读 评论(0) 收藏
1. 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少 CPU 跨切循环层的次数. 2. 如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面 ...
- Oracle基础操作
数据库的定义.作用介绍: 什么是数据库? 按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 数据库的发展史: 起始于1962年,1968年在IBM出现 数据库在测试过程中的作用: 需 ...
- codeforces 797 E. Array Queries【dp,暴力】
题目链接:codeforces 797 E. Array Queries 题意:给你一个长度为n的数组a,和q个询问,每次询问为(p,k),相应的把p转换为p+a[p]+k,直到p > n为 ...
- POJ-2429 GCD & LCM Inverse---给出gcd和lcm求原来两个数
题目链接: https://cn.vjudge.net/problem/POJ-2429 题目大意: 给出两个数的gcd和lcm,求原来的这两个数(限定两数之和最小). 解题思路: 首先,知道gcd和 ...
- 详解为什么32位系统只能用4G内存.
本文转自:https://www.cnblogs.com/nvd11/archive/2013/04/02/2996784.html,感谢作者的干货 既然是详解, 就从最基础的讲起了. 1. Bit( ...
- springmvc(5)拦截器
1.什么是拦截器 是指通过统一的拦截从浏览器发送到服务器的请求来完成相应服务增强 2.拦截器的基本原理 可以通过配置过滤器解决乱码问题 和过滤器非常相似 3.搭建工程 注意jar包 此时的工程是完成后 ...
- javascript中数组的22种方法 (转载)
前面的话 数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详 ...
- [转]MFC子线程更改图像数据后更新主窗口图像显示方法
程序思路是由外部的输入输出控制卡发出采集图像信号,之后相机采集图像得到图像数据指针,接收图像数据指针创建成图像最后显示到MFC对话框应用程序的Picture Control控件上,同时,为了标定相机位 ...
- C# 密封类sealed
1.密封类定义 如果我们不希望自己编写的类被继承:如果有的类已经没有再被继承的必要,这时,我们可以使用sealed修饰符在类中进行声明,以达到该类不能派生其它类的目的,该类就被称为密封类. 2.密封类 ...
- C# DataSet导出Excel
//多个DataSet导出Excel文件 public static void DataSetToExcel(DataSet p_ds,string strSavePath) { ;//多个DataS ...