質問編集履歴

7

質問内容の修正

2018/12/26 06:38

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  (これはいろいろな場所で使われているので変更できません)
4
4
 
5
- このフィールドを time 型の値と比較検索したいです
5
+ このフィールドを比較検索したいです
6
6
 
7
7
 
8
8
 

6

質問内容の修正

2018/12/26 06:38

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 年月を表す year_month というカラムが 6 文字の 201812 のような 'varchar(6)' 型になっているのですが
1
+ 年月を表す year_month というカラムが 6 文字の 201812 のような `varchar(6)` 型になっているのですが
2
2
 
3
3
  (これはいろいろな場所で使われているので変更できません)
4
4
 

5

質問内容の修正

2018/12/26 06:36

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 年月を表す year_month というカラムが 6 文字の 201812 のような string 型になっているのですが
1
+ 年月を表す year_month というカラムが 6 文字の 201812 のような 'varchar(6)' 型になっているのですが
2
2
 
3
3
  (これはいろいろな場所で使われているので変更できません)
4
4
 

4

質問内容の修正

2018/12/26 06:36

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -68,8 +68,6 @@
68
68
 
69
69
 
70
70
 
71
-
72
-
73
71
  view
74
72
 
75
73
  ```
@@ -86,4 +84,26 @@
86
84
 
87
85
 
88
86
 
89
- g投目の where 文を消すとエラーなく表示されます
87
+ 目の where 文を消すとエラーなく表示されます
88
+
89
+
90
+
91
+
92
+
93
+ ### 試した例:
94
+
95
+
96
+
97
+ エラーを起こす
98
+
99
+ .select('STR_TO_DATE(year_month, "%Y%m")')
100
+
101
+ .where("year_month >= '201804'")
102
+
103
+
104
+
105
+ エラーを起こさない
106
+
107
+ .where("id >= '201804'")
108
+
109
+ .where(year_month: '201804')

3

質問内容の修正

2018/12/26 06:35

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -43,3 +43,47 @@
43
43
 
44
44
 
45
45
  どうかけばいいのでしょうか…
46
+
47
+
48
+
49
+
50
+
51
+ 追記:
52
+
53
+
54
+
55
+ controller
56
+
57
+ ```
58
+
59
+ puts params[:since] # 201804 が表示される
60
+
61
+ @activities = Act.where(user_id: user_id)
62
+
63
+ @activities.where("year_month >= ?", params[:since]) if params[:since] # ここでフォームから受け取った6文字の年月で表示内容を絞りたい
64
+
65
+ @activities = @activities.order('id desc')
66
+
67
+ ```
68
+
69
+
70
+
71
+
72
+
73
+ view
74
+
75
+ ```
76
+
77
+ <% if @activities.present? %>
78
+
79
+ ...
80
+
81
+ ```
82
+
83
+
84
+
85
+ のところでエラーになります
86
+
87
+
88
+
89
+ 2g投目の where 文を消すとエラーなく表示されます

2

質問内容の修正

2018/12/26 06:26

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -28,4 +28,18 @@
28
28
 
29
29
 
30
30
 
31
+ https://dev.mysql.com/doc/refman/5.6/ja/string-comparison-functions.html
32
+
33
+ 文字列のまま1文字ずつ比較してくれる strcmp というのもあるみたいなのですが
34
+
35
+ ```
36
+
37
+ .where('strcmp(year_month, ?) >= 0', '201804')
38
+
39
+ ```
40
+
41
+ とかいてもやはりエラーになります
42
+
43
+
44
+
31
45
  どうかけばいいのでしょうか…

1

質問内容の修正

2018/12/26 05:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -18,13 +18,13 @@
18
18
 
19
19
  ```
20
20
 
21
- のようにかくと syntax error になります
21
+ のようにかくと SQL syntax error になります
22
22
 
23
23
 
24
24
 
25
25
  記事を読むと string => int は暗黙のうちにやってくれるみたいにかいてるんですが
26
26
 
27
- select をかかなくても syntax エラーになります
27
+ select をかかなくても SQL syntax エラーになります
28
28
 
29
29
 
30
30