将SQL作为十进制返回

时间:2015-04-09 00:07:11

标签: mysql ruby-on-rails ruby

我使用Dashing作为Ruby的项目。

我有一个在数据库中运行时返回19.42的SQL查询。但是,当我将其放入代码时,它返回.1942。我想弄清楚的是如何让小数点向右移动两个位置。

以下是查询和代码的外​​观:

require 'mysql2'

SCHEDULER.every '2h', :first_in => 0 do |job|

  # MySQL connection
  db = Mysql2::Client.new(:host => "host", :username => "username", :password => "password", :port => port, :database => "database" )

  sql6 = "SELECT AVG(tickets.total_user_waiting) / (60 * 60) AS 'Total Tickets' FROM tickets WHERE tickets.status IN ('resolved', 'archived') AND tickets.date_resolved between date_format(date_sub(now(), interval 7 day), '%Y-%m-%d 00:00:00') and date_format(date_sub(now(), interval 1 day), '%Y-%m-%d 23:59:59');"
  response_sql = db.query(sql6)

send_event('response_sql',    {current: response_sql.first['Total Tickets']})

以下是数据库中SQL查询的结果:

+-------------+
| 19.40648160 |
+-------------+

用Ruby编写的代码输出如下:

0.194064816E2

我并不担心删除结束数字,因为我只是将小数点后两位放在右边,尽管那是理想的。

我尝试了选择回合,但在数据库中没有运气。

2 个答案:

答案 0 :(得分:3)

0.194064816E2在数学上与19.40648160等效。就像你写了0.194064816 x 10^2一样。例如,如果我启动IRB并将该值抛出到变量中,则正确的float返回:

2.0.0-p481 :001 > x = 0.194064816E2
 => 19.4064816 

我不确定为什么Ruby会打印特定的符号,但如果您正在执行任何其他操作,那么所有数字都应该正常运行。

答案 1 :(得分:-1)

解决我遇到的问题的解决方案是。

send_event('response_sql',    {current: response_sql.first['Total Tickets'].ceil})

所以我所做的是在发送事件结束时添加了.ceil。然后它将它四舍五入为两个数字。