将时间去掉横线转化为int类型

有些特殊的情况需要将时间去掉横线转化为int类型方便前端拼接

1.初始时间类型为正常的time.Time
返回的是: “log_date”: “2018-08-08T00:00:00Z”,
数据库得到的是:
这里写图片描述

2. select to_number(log_date::text, '9999999999999') as log_date 就可以吧log_date转化为int类型(记得在返回的参数里也设置为int类型)得到的返回是结果: “log_date”: 20180808,
数据库得到的是:
这里写图片描述

3.转化成功 ,第一个参数是要转化的值这里是是l og_date 先把log_date转化为文本text类型,要不 to_number(text, text) 方法不匹配,第二个参数是模板,下面给出模板模式:

模式     描述
9     带有指定数值位数的值
0     带前导零的值
.(句点)     小数点
,(逗号)     分组(千)分隔符
PR     尖括号内负值
S     带符号的数值
L     货币符号
D     小数点
G     分组分隔符
MI     在指明的位置的负号(如果数字 < 0)
PL     在指明的位置的正号(如果数字 > 0)
SG     在指明的位置的正/负号
select extract(epoch from '03:21:06.678':: time ); 这个extract(epoch from )函数得到的是 时间 是秒单位,如果需要毫秒值就直接乘以1000: select extract(epoch from now())*1000; 去掉原来的毫秒值 向下取整函数floor() select floor(extract(epoc... 前提:当数据库中保存的是 time stamp 类型 时,我们需要通过这个 时间 戳来做乐观数据锁,那么久需要Select出来,然后在更新的时候在Update的where条件中判断 时间 戳是否与查询时相同。 下面的SQL文查询结果是 "2018-08-20 10:09:10.815125",并且... 分析: 写道 要比较两个数据, 必须要保证数据的格式和单位一致, 才可以比较故有两个方案1、 将 int 8 转为 yyyy-mm-..............2、将yyyy-mm................转为 int 8 经过和同事讨论, 终于各自找到了一种方法 解决 写道 SELECT to_ time stamp(1423538481.44202)将 long 类型 转换为 yyyy-mm................ 类型 ,注意该方法只处理到 秒, 而我们java 一般存的都 PG 数据库, 时间 戳转换 将毫秒/秒 转成 格式化后的 时间 select to_char(to_ time stamp( time ),'yyyy-MM-dd HH24-MI-SS') as time from tablename; #统计每个月的记录数 select to_char(to_ time stamp( time ),'yyyy-MM') as time ,count(1) from tablename group by time ; 我之前的字段 类型 int ,需要修改成 time stamp 时间 类型 ,尝试之后发现不能直接转换,报错如下: ERROR: cannot cast type int eger to time stamp without time zone LINE 2: TYPE TIME STAMP USING create_ time :: time stamp without time zon... 错误:无法将 类型 整数强制转换为没有时区的 时间 戳 解决方案: 第一步:先把 int 类型 的字段修改成 VARCHAR ALTER.