mysql - 带有 mysql2 gem 的 Ruby 脚本 - 将数据库日期与 Date.new 进行比较

标签 mysql ruby ubuntu

我正在编写一个使用 mysql2 gem 并在 apache2/passenger 下运行的 Ruby 脚本。它不使用 rails。

该脚本遍历 mySql 查询结果并将数据库日期与今天进行比较以获取耗时(以天为单位)。问题是从 Date.new 中减去数据库日期得到的字符串是一个类似于 -2457521/1 的字符串。正确答案应为 0。

我尝试使用 Date.parse() 和 Date.strptime() 将日期转换为 Ruby 日期,但得到的结果相同。如何减去这些日期以获得它们之间的天数?

这是从我的脚本中摘录的经过编辑的代码。

require 'mysql2'

class Uptime

  def call(env)

    results = con.query("SELECT * FROM Uptimes ORDER BY Up DESC LIMIT 10")

    flag = 0

    results.each(symbolize_keys: true) do |row| 

       if flag == 0 
          last_event = row[:Up]  # => 2016-05-12
          flag = 1
       end

    end  

#        last_event = Date.parse("#{last_event}")

#        last_event = Date.strptime("#{last_event}" "%Y-%m-%d") 

         days = Date.new - last_event # => -2457521/1


        [200, {"Content-Type" => "text/html"}, [html]]
  end
end

最佳答案

我认为你的问题是当我运行 Date.new 时你正在使用 Date.new在 irb 中,它返回以下内容:

#<Date: -4712-01-01 ((0j,0s,0n),+0s,2299161j)>

这看起来像是某年的 1 月 1 日。

如果您使用 Date.today相反,它会将当前日期返回给您。

当我在 irb #<Date: 2016-05-12 ((2457521j,0s,0n),+0s,2299161j)> 中运行它时,我得到了这个注意 2016-05-12 与 -4712-01-01 这也是您的结果是否定的原因。

希望这个回答对您有所帮助:)

关于mysql - 带有 mysql2 gem 的 Ruby 脚本 - 将数据库日期与 Date.new 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37183479/

相关文章:

bash - 使用 sed 处理一段完整的文本

javascript - 如何使用php将mysql中选定的数据插入到mysql中的另一个表中?

java - 如何使用 JPA 将 Java 日期存储到 Mysql 日期时间

ubuntu - 我在 Ubuntu 中的代码消耗的能量

Ruby 类/对象/模块图解释

ruby - 尝试使用 Nokogiri 抓取网站时如何修复 "undefined method"

linux - 在不启动 Ubuntu 终端的情况下执行我的 Shell 和 Bash 脚本

python - 从 perl 转向 python,我想知道 python 是否有类似 DBI 的东西?

mysql - 无法创建表,不确定要做什么(错误 : 150)

ruby - 使用 Aruba/Cucumber 写入标准输入