为了清晰起见,已编辑并添加了信息:
对于 Ruby 编码(以及一般编码)来说,完全是新手,所以请保持温柔。
我有一个 MySQL 数据库,我想从其中一个表中提取一些数据,其中一列标记为“fulldate”。
以下代码可提取特定日期之后的所有行。
start_date = Date.new(2018, 1, 2)
end_date = Date.new(2018, 1, 12)
clw_check = client.query('SELECT * FROM rotadates WHERE fulldate >"#{start_date}"')
clw_check.each do |row| puts row["fulldate"] end
然后输出是每行的日期列表。
但是,当我更改为
clw_check = client.query('SELECT * FROM rotadates WHERE fulldate <"#{end_date}"')
clw_check.each do |row| puts row["fulldate"] end
然后这会产生
=> []
如果我输入日期而不是 #{} 表达式,那么我会得到一个包含小于和大于表达式的日期列表。
我已经搜索了 StackOverflow 和整个网络,但我无法弄清楚为什么它适用于第一个表达式和第二个表达式。
检查 start_date 和 end_date 是日期还是字符串表明它们是日期,并且 MySQL 列也是具有相同 yyyy-mm-dd 格式的日期。
MySQL 表中的行示例:
旋转
| id日期 |完整日期 |年 |月 |日 |季度 |周 |星期几 |周末| clw |
| 20180102 | 2018-01-02 | 2018 | 1 | 2 | 1 | 1 | 2 | 0 | 1 |
| 20180103 | 2018-01-03 | 2018 | 1 | 3 | 1 | 1 | 3 | 0 | 1 |
| 20180104 | 2018-01-04 | 2018 | 1 | 4 | 1 | 1 | 4 | 0 | 1 |
| 20180105 | 2018-01-05 | 2018 | 1 | 5 | 1 | 1 | 5 | 0 | 1 |
| 20180106 | 2018-01-06 | 2018 | 1 | 6 | 1 | 1 | 6 | 1 | 1 |
最佳答案
我不知道为什么,但是当我在 IRB 中传递它时,它似乎不起作用,而在 Aptana 控制台中它却起作用。
关于mysql - 为什么从 Ruby 通过 Mysql2 传递一个日期查询可以工作,而另一个则不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47894616/