postgreSQL 使用timestamp转成date格式_PostgreSQL

来源:脚本之家  责任编辑:小易  

尝试了以下两种方式,将pg中的timestamp格式转换成date格式:

方式一:

select to_date( to_char( f.begin_time, 'yyyy-mm-dd' ), 'yyyy-mm-dd' ) from hafd f

方式二:

select f.begin_time::DATE from hafd f

大概比较了一下,9万条测试数据,方式二的性能更好!

补充:PostgreSQL中的时间戳格式转化常识

前提:当数据库中保存的是timestamp类型时,我们需要通过这个时间戳来做乐观数据锁,那么久需要Select出来,然后在更新的时候在Update的where条件中判断时间戳是否与查询时相同。

下面的SQL文查询结果是 "2018-08-20 10:09:10.815125",并且返回类型可以当String处理。返回json等都方便使用。

SQL> select to_char(updateTime, 'yyyy-mm-dd hh24:mi:ss.us') from tbl_A;

更新时,参数传入“2018-08-20 10:09:10.815125”的字符串,那么需要在SQL中转化来匹配updateTime字段的timeStamp数据类型。

SQL> update tbl_A set username='XXX' where userid='001' and updateTime = to_timestamp('2018-08-20 10:09:10.815125','yyyy-mm-dd hh24:mi:ss.us');

另附表一张

函数 返回类型 描述 例子
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 precision, text) text 把实数/双精度数转换成字串 to_char(125.8::real, '999D9')
to_char(numeric, text) text 把numeric转换成字串 to_char(-125.8, '999D99S')
to_date(text, text) date 把字串转换成日期 to_date('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(text, text) timestamp 把字串转换成时间戳 to_timestamp('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(double) timestamp 把UNIX纪元转换成时间戳 to_timestamp(200120400)
to_number(text, text) numeric 把字串转换成numeric to_number('12,454.8-', '99G999D9S')


模式 描述
HH 一天的小时数(01-12)
HH12 一天的小时数(01-12)
HH24 一天的小时数(00-23)
MI 分钟(00-59)
SS 秒(00-59)
MS 毫秒(000-999)
US 微秒(000000-999999)
AM 正午标识(大写)
Y,YYY 带逗号的年(4和更多位)
YYYY 年(4和更多位)
YYY 年的后三位
YY 年的后两位
Y 年的最后一位
MONTH 全长大写月份名(空白填充为9字符)
Month 全长混合大小写月份名(空白填充为9字符)
month 全长小写月份名(空白填充为9字符)
MON 大写缩写月份名(3字符)
Mon 缩写混合大小写月份名(3字符)
mon 小写缩写月份名(3字符)
MM 月份号(01-12)
DAY 全长大写日期名(空白填充为9字符)
Day 全长混合大小写日期名(空白填充为9字符)
day 全长小写日期名(空白填充为9字符)
DY 缩写大写日期名(3字符)
Dy 缩写混合大小写日期名(3字符)
dy 缩写小写日期名(3字符)
DDD 一年里的日子(001-366)
DD 一个月里的日子(01-31)
D 一周里的日子(1-7;周日是1)
W 一个月里的周数(1-5)(第一周从该月第一天开始)
WW 一年里的周数(1-53)(第一周从该年的第一天开始)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持真格学网。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文章:PostgreSQL批量update与oracle差异详解基于postgresql行级锁for update测试postgresql的now()与Oracle的sysdate区别说明JDBC中使用Java8的日期LocalDate和LocalDateTime操作mysql、postgresql

  • 本文相关:
  • 解决postgresql服务启动后占用100% cpu卡死的问题
  • sqoop读取postgresql数据库表格导入到hdfs中的实现
  • 详解postgresql数据库对象信息及应用
  • pgsql锁表后kill进程的操作
  • sqlite教程(七):数据类型详解
  • postgresql 主备数据宕机恢复测试方案
  • postgresql中slony-i同步复制部署教程
  • postgresql教程(五):函数和操作符详解(1)
  • postgresql rank() over, dense_rank(), row_number()用法区别
  • 基于postgresql pg_hba.conf 配置参数的使用说明
  • postgresql 求两个时间差 (相差天数,timestamp类型)
  • postgresql timestamp with time zone 怎么比较大小
  • postgresql 毫秒转日期
  • postgresql的timestamp是什么类型
  • 在postgresql中怎样截获所有的exception
  • Pgsql时间戳怎么去掉时区
  • postgresql 存储过程的事务处理
  • postgreSQL 怎么把时间字段设置成空
  • postgresql的timestamp对应java什么类型
  • postgresql怎么截取日期到月份
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页postgresql批量update与oracle差异详解基于postgresql行级锁for update测试postgresql的now()与oracle的sysdate区别说明jdbc中使用java8的日期localdate和localdatetime操作mysql、postgresql解决postgresql服务启动后占用100% cpu卡死的问题sqoop读取postgresql数据库表格导入到hdfs中的实现详解postgresql数据库对象信息及应用pgsql锁表后kill进程的操作sqlite教程(七):数据类型详解postgresql 主备数据宕机恢复测试方案postgresql中slony-i同步复制部署教程postgresql教程(五):函数和操作符详解(1)postgresql rank() over, dense_rank(), row_number()用法区别基于postgresql pg_hba.conf 配置参数的使用说明postgresql 角色与用户管理介绍windows下postgresql数据库的下载windows下postgresql安装图解15个postgresql数据库实用命令分postgresql中的oid和xid 说明postgresql alter语句常用操作小windows postgresql 安装图文教程postgresql 安装和简单使用postgresql 创建表分区postgresql新手入门教程postgresql 数字与字符串类型转换操作postgresql教程(十):性能提升技巧postgresql 实现查询某时间区间的所有日期mac os上安装postgresql的教程postgresql创建新增、删除与修改触发器的postgresql之分区表(partitioning)postgresql 两表关联更新操作sqoop 实现将postgresql表导入hive表postgresql alter语句常用操作小结解决postgresql表中的字段名称包含特殊符
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved