Phoenix查询日期相关函数

时间戳转日期(带时区)

-- 数据库optime字段为int类型的时间戳,这里要多一次。
to_char(CONVERT_TZ(to_date(CAST(to_char("optime",'#') AS varchar),'s'), 'GMT', 'Etc/GMT-9'),'yyyy-MM-dd HH:mm:ss')

-- 直接写死时间戳测试,少转一次类型
to_char(CONVERT_TZ(to_date('1582992000','s'), 'UTC', 'Asia/Shanghai'),'yyyy-MM-dd HH:mm:ss')

日期转时间戳(带时区)

select to_char(to_number(to_date('2020-03-01','yyyy-MM-dd','GMT+8'))/1000,'##########');

分区求值 使用last_value函数达到partition by

需求:统计货币表中,每个玩家获取钻石总和,消耗总和,以及最后剩余钻石数。
表结构:
在这里插入图片描述

SELECT DISTINCT a."rid" AS "rid",a."sid" AS "sid" ,a."rname" AS "rname",TOTAL_GET,TOTAL_COST,REMAIN FROM "a8_kr"."t_log_money" AS a  
     LEFT JOIN 
     (
        SELECT
	    "rid", sum(CASE WHEN "val">0 THEN "val" ELSE 0 end)  AS total_get,sum(CASE WHEN "val"<0 THEN "val" ELSE 0 end)  AS total_cost,LAST_VALUE("new") WITHIN GROUP (ORDER BY "optime" ASC) AS remain
        FROM
	    "a8_kr"."t_log_money"
	    WHERE "optime" >= to_number(to_date('2022-11-01','yyyy-MM-dd','GMT+9'))/1000
	    AND "optime" < to_number(to_date('2022-12-01','yyyy-MM-dd','GMT+9'))/ 1000
	    AND "moneytype"='diamond'
	    GROUP BY "rid"
      )t
ON a."rid"=t."rid" 
        WHERE "optime" >= to_number(to_date('2022-11-01','yyyy-MM-dd','GMT+9'))/1000
	    AND "optime" < to_number(to_date('2022-12-01','yyyy-MM-dd','GMT+9'))/ 1000
AND  "moneytype"='diamond';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲不住的程序员

您的打赏将是我最大的鼓励感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值