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)(第一周从该年的第一天开始)

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

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐