postgreSQL 使用timestamp转成date格式
程序员文章站
2022-03-10 21:36:38
尝试了以下两种方式,将pg中的timestamp格式转换成date格式:方式一:select to_date( to_char( f.begin_time, 'yyyy-mm-dd' ), 'yyyy...
尝试了以下两种方式,将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)(第一周从该年的第一天开始) |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
推荐阅读
-
使用七牛将amr格式的录音转成mp3格式后,提示文件已经损坏
-
Java中Date,Calendar,Timestamp的区别以及相互转换与使用
-
Java中Date,Calendar,Timestamp的区别以及相互转换与使用
-
js获取年月日格式(教你将日期从string转成date)
-
js获取年月日格式(教你将日期从string转成date)
-
php使用memcoder将视频转成mp4格式的方法
-
PowerShell中使用Get-Date获取日期时间并格式化输出的例子
-
postgreSQL 使用timestamp转成date格式
-
怎么在PostgreSQL中使用timestamp数据类型?
-
Golang中使用Date进行日期格式化(沿用Java风格)