为什么通过Mysql2从Ruby传递一个日期查询而不是另一个?

时间:2017-12-19 20:21:23

标签: mysql ruby date mysql2

为了清晰起见而添加了信息:

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表中的行示例:

rotadates

| idDate | fulldate |一年|月|一天|季度|一周| dayOfWeek |周末| 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 |

1 个答案:

答案 0 :(得分:0)

我不知道为什么,但是当我在IRB中传递它时,它似乎不起作用,而在Aptana控制台中它确实有效。