postgreSQL 使用timestamp转成date格式

尝试了以下两种方式,将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)(第一周从该年的第一天开始)

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

(0)

相关推荐

  • PostgreSQL批量update与oracle差异详解

    上篇文章给大家介绍了PostgreSQL实现批量插入.更新与合并操作的方法 感兴趣的朋友可以点击查看,今天给大家分享PostgreSQL批量update与oracle差异,具体内容如下所示: 当我们在数据库中有这样的需求时: 需要以某列的当前值为判断对象,将其更新成其它值. 例如下面一张表: ID INFO ---------- ---------- 2 a 1 b 3 c 4 d 5 e 我们最简单的方式就是通过多个update来完成: update t1 set id= 2 where id

  • postgresql的now()与Oracle的sysdate区别说明

    postgresql的now()为当前事务开始时间, 而Oracle的sysdate是当前时间. 区别在于事务. postgresql中的now(): postgres=# begin ; BEGIN postgres=# select now(); now ------------------------------- 2017-03-31 14:28:32.403869+08 (1 row) postgres=# select now(); now ---------------------

  • JDBC中使用Java8的日期LocalDate和LocalDateTime操作mysql、postgresql

    前言 相信大家应该都知道,在实体Entity里面,可以使用java.sql.Date.java.sql.Timestamp.java.util.Date来映射到数据库的date.timestamp.datetime等字段 但是,java.sql.Date.java.sql.Timestamp.java.util.Date这些类都不好用,很多方法都过时了. Java8里面新出来了一些API,LocalDate.LocalTime.LocalDateTime 非常好用 如果想要在JDBC中,使用Ja

  • 基于postgresql行级锁for update测试

    创建表: CREATE TABLE db_user ( id character varying(50) NOT NULL, age integer, name character varying(100), roleid character varying, CONSTRAINT db_user_pkey PRIMARY KEY (id) ) 随便插入几条数据即可. 一.不加锁演示 1.打开一个postgreSQL的SQL Shell或pgAdmin的SQL编辑器窗口,执行: begin; s

  • postgreSQL 使用timestamp转成date格式

    尝试了以下两种方式,将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类型时,我们需要通过这

  • 在数据库里将毫秒转换成date格式的方法

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式. 一. 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制代码 代码如下: mysql> select from_unixtime(1, '%Y-%m-%d %H:%i:%S'); +---------------------------------------+ | from_unixtime(1, '%Y-%m-%d

  • PHP实现将多个文件压缩成zip格式并下载到本地的方法示例

    本文实例讲述了PHP实现将多个文件压缩成zip格式并下载到本地的方法.分享给大家供大家参考,具体如下: 废话不多说,直接上代码 //这里需要注意该目录是否存在,并且有创建的权限 $zipname = 'path/test.zip' //这是要打包的文件地址数组 $files = array("mypath/test1.txt","mypath/test2.pdf"); $zip = new ZipArchive(); $res = $zip->open($zi

  • pandas时间序列之如何将int转换成datetime格式

    目录 将int转换成datetime格式 原始时间格式 pandas 时间数据处理 转化时间类型 生成时间序列 提取时间属性 计算时间间隔 计算时间推移 获取当前机器的支持的最大时间和最小时间 将int转换成datetime格式 原始时间格式 users['timestamp_first_active'].head() 原始结果: 0 200903190432551 200905231748092 200906092312473 200910310601294 20091208061105Nam

  • JS自定义函数实现时间戳转换成date的方法示例

    本文实例讲述了JS自定义函数实现时间戳转换成date的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>获取当前年/月/日(www.jb51.net)</title> </head> <body> <script> function UnixToDate(unixTime

  • 用js将long型数据转换成date型或datetime型的实例

    数据库中存储的日期格式有date型(yyyy-MM-dd格式日期)与datetime型(yyyy-MM-dd 00:00:00格式日期),当用Java程序将数据库中的日期数据传向前端时,若后台没有方法处理日期,则将以Long型数据传向前端.例如: 数据库存储的日期为:2017-01-06 20:30:00 前端获取到(通过ajax进行交互)的日期格式为:1483705800000 在前端页面中要显示正确的日期格式. 下面是将long型转换为date型或datetime型日期格式的js方法: 返回

  • jquery 将当前时间转换成yyyymmdd格式的实现方法

    如题: function nowtime(){//将当前时间转换成yyyymmdd格式 var mydate = new Date(); var str = "" + mydate.getFullYear(); var mm = mydate.getMonth()+1 if(mydate.getMonth()>9){ str += mm; } else{ str += "0" + mm; } if(mydate.getDate()>9){ str +=

  • Nginx 日志改成 JSON 格式的方法

    Nginx 日志默认为普通文本的格式,例如,下面是 Nginx 的一行访问日志: 10.88.122.105 - - [02/Dec/2017:09:15:04 +0800] "GET /js/pagination.js HTTP/1.1" 304 0 "http://10.88.105.20:8063/stockrecommand.html" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW6

  • Js中将Long转换成日期格式的实现方法

    主要用于将数据库中日期用long表示,转换成YYYY-MM-DD格式或YYYY-MM-DD HH:mm:ss格式 若显示为YYYY-MM-DD HH:mm:ss格式,调用如下方法: datetimeFormat(longTypeDate); 若显示为YYYY-MM-DD格式,调用如下方法: dateFormat(longTypeDate); Js中具体方法如下: /* * 时间格式化工具 * 把Long类型的1527672756454日期还原yyyy-MM-dd 00:00:00格式日期 */

  • form表单数据封装成json格式并提交给服务器的实现方法

    1.jsp代码,form表单: <form action="#" id="costForm"> <input type="hidden" id="userId" name="userId"/> <div id="COST"> <img src='<%=path %>/cvc/center/images/close.png' class

随机推荐