首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ruby Hash中迭代时将UTC转换为日期

在Ruby Hash中迭代时将UTC转换为日期
EN

Stack Overflow用户
提问于 2022-04-27 10:27:01
回答 1查看 23关注 0票数 0

我有一个RUBY HASH,它是以下oracle-database查询的结果:

代码语言:javascript
复制
Request.where("customer_id = #{customer.id} AND request_method != 'OPTIONS' AND request_time BETWEEN ?  AND ?",  start_time, end_time).group(:request_time).count(:request_time)

RESULT => {2022-04-21 14:07:16 UTC=>22, 2022-04-25 14:07:16 UTC=>3}

是否有一种方法可以迭代散列并将UTC Format转换为DATE format,同时保留值,从而只更改键?

所以看起来是这样的:

代码语言:javascript
复制
{2022-04-21=>22, 2022-04-25=>3}

我试过的

代码语言:javascript
复制
dates_init_hash = {}
(start_time.to_date..end_time.to_date).each do |date|
  dates_init_hash[date] = 0
end

requests.each do |key,value|    
   date = Date.parse(key.to_date.iso8601)
   puts date    
   next if dates_init_hash[date].nil?   
   dates_init_hash[date] += 1 
end

我的想法

如果我能够在数据库查询之后直接转换UTC,它将使我免于通过dates_init_hash方法运行UTC。

EN

回答 1

Stack Overflow用户

发布于 2022-04-27 10:46:03

您似乎在问如何仅使用date组件而忽略时间组件来返回request_time的计数。在Oracle中,您可以使用:

代码语言:javascript
复制
SELECT TRUNC(request_time) AS request_day,
       COUNT(request_time) AS num_requests
FROM   table_name
WHERE  customer_id = ?
AND    request_method != 'OPTIONS'
AND    request_time BETWEEN ? AND ?
GROUP BY
       TRUNC(request_time)

通过直接调用answer (而不是试图在Ruby中动态构建查询),这个Ruby似乎给出了类似的Ruby解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72027184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档