質問編集履歴

16

追記

2018/08/28 09:03

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- .NET Framework
1
+ SQL想定する結果と異なる結果が返ってくる
test CHANGED
@@ -1,3 +1,3 @@
1
- 【解決できませんでした】
1
+ ------------------------------------------------------------
2
2
 
3
- ------------------------------
3
+ ------------------------------------------------------------

15

タイトル

2018/08/28 09:03

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- MySQL】WHERE条件の通りにデータがSELECTされない
1
+ .NET Framework 】
test CHANGED
File without changes

14

追記

2018/08/16 08:03

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,267 +1,3 @@
1
- ###実現したいこと
1
+ 【解決できませんでした
2
2
 
3
- SQL初心者です。
4
-
5
- WHERE条件でDBからデータをSELECTしたいのですが、
6
-
7
- 一部どうしても納得いかない動きがあり、その理由が分からず困っています。
8
-
9
-
10
-
11
- ###うまくいかないこと
12
-
13
- AAAデータベースのBBBテーブルに対し、DATE型のカラムに対してWHERE条件をつけてSELECTしたいのですが、
14
-
15
- うまくいきません。
16
-
17
-
18
-
19
- 【うまくいかないケース】
20
-
21
- このような場合、本来5件あるデータの一部しか取れません。
22
-
23
- ```SQL
24
-
25
- SELECT * FROM BBB WHERE col_date >= '2018-01-01';
26
-
27
- あるいは
28
-
29
- SELECT * FROM BBB WHERE col_date >= '2018/01/01';
30
-
31
- SELECT * FROM BBB WHERE col_date >= date('2018/01/01');
32
-
33
- ```
34
-
35
- ```Text
36
-
37
- +-----------+------------+
3
+ ------------------------------
38
-
39
- | id | col_date |
40
-
41
- +-----------+------------+
42
-
43
- | 000000001 | 2018-01-01 |
44
-
45
- | 000000003 | 2018-03-01 |
46
-
47
- +-----------+------------+
48
-
49
- ```
50
-
51
-  
52
-
53
- このように記述を変更すると、該当するデータが全て取得できます。
54
-
55
- ```SQL
56
-
57
- SELECT * FROM BBB WHERE date(col_date) >= '2018-01-01';
58
-
59
- あるいは
60
-
61
- SELECT * FROM BBB WHERE date(col_date) >= 2018/02/01;
62
-
63
- SELECT * FROM BBB WHERE col_date >= 2018/02/01;
64
-
65
- SELECT * FROM BBB WHERE date(col_date) >= 2018-02-01;
66
-
67
- SELECT * FROM BBB WHERE col_date >= 2018-02-01;
68
-
69
- SELECT * FROM BBB WHERE col_date >= '2018-06-01';
70
-
71
- (上記のいずれか)
72
-
73
- ```
74
-
75
- ```Text
76
-
77
- +-----------+------------+
78
-
79
- | id | col_date |
80
-
81
- +-----------+------------+
82
-
83
- | 000000001 | 2018-01-01 |
84
-
85
- | 000000002 | 2018-02-01 |
86
-
87
- | 000000003 | 2018-03-01 |
88
-
89
- | 000000004 | 2018-04-01 |
90
-
91
- | 000000005 | 2018-05-01 |
92
-
93
- +-----------+------------+
94
-
95
- ```
96
-
97
-
98
-
99
- ###前提条件
100
-
101
- ・BBBテーブルの"col_date"はdate型で定義されています。
102
-
103
- ・MySQLバージョンは**mysql Ver 14.14 Distrib 5.5.40, for Linux (x86_64) using readline 5.1**です。
104
-
105
-
106
-
107
- ###知りたいこと
108
-
109
- ・dateで変換すると指定通りのデータが取れるということは、
110
-
111
-  MySQLのカラムの中に指定した型とは違うデータが入っているということでしょうか? 
112
-
113
-  もし入れることができるのであれば、それはどういうケースに起こり得るのでしょうか?
114
-
115
-
116
-
117
- ・実はSQLそのものが間違えているということはございますでしょうか。
118
-
119
-  よく見直しながら書いたつもりですが、当方SQL初心者なもので記述に
120
-
121
-  誤った理解がある可能性もございます。そのその際は、ご指摘頂けますと幸いでございます。
122
-
123
-
124
-
125
- ・1つ目と2つ目のクエリでは、何が影響して結果が変わってしまっているのでしょうか。
126
-
127
-
128
-
129
-  
130
-
131
-  
132
-
133
- ####お手数ですが、ご教示頂けますと幸いです。宜しくお願い申し上げます。
134
-
135
-
136
-
137
- 不足している情報がございましたら、追記させていただきますので、
138
-
139
- お申し付け下さい。
140
-
141
- 宜しくお願い致します。
142
-
143
-
144
-
145
- 【追記】
146
-
147
- ・反対側にdate()をかけた場合は、2件しかSELECTされません。
148
-
149
-
150
-
151
- ・SHOW CREATE TABLE BBBの結果です。
152
-
153
- ```Text
154
-
155
- `id` int(11) NOT NULL AUTO_INCREMENT,
156
-
157
- `col_date` date NOT NULL DEFAULT '0000-00-00' COMMENT '日付',
158
-
159
- (レイアウト崩れが激しかったため、関係のあるカラムの部分だけ切り出しています)
160
-
161
- ```
162
-
163
-
164
-
165
- ・データベースを作り直してみての検証
166
-
167
- 正常に動作します
168
-
169
- ```Text
170
-
171
- mysql> use mysqlTest
172
-
173
- Reading table information for completion of table and column names
174
-
175
- You can turn off this feature to get a quicker startup with -A
176
-
177
-
178
-
179
- Database changed
180
-
181
- mysql>
182
-
183
- mysql> show tables;
184
-
185
- +---------------------+
186
-
187
- | Tables_in_mysqlTest |
188
-
189
- +---------------------+
190
-
191
- +---------------------+
192
-
193
- 5 rows in set (0.00 sec)
194
-
195
-
196
-
197
- mysql> create table BBB(
198
-
199
- -> `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
200
-
201
- -> `col_date` date NOT NULL DEFAULT '1970-01-01' COMMENT '日付'
202
-
203
- -> );
204
-
205
- Query OK, 0 rows affected (0.03 sec)
206
-
207
-
208
-
209
- mysql>
210
-
211
- mysql>
212
-
213
- mysql>
214
-
215
- mysql> show tables;
216
-
217
- +---------------------+
218
-
219
- | Tables_in_mysqlTest |
220
-
221
- +---------------------+
222
-
223
- | BBB |
224
-
225
- +---------------------+
226
-
227
- 6 rows in set (0.00 sec)
228
-
229
-
230
-
231
- mysql> insert into BBB(col_date) values
232
-
233
- -> ('2017-12-01'),('2018-01-01'),('2018-02-01'),('2018-03-01');
234
-
235
- Query OK, 4 rows affected (0.00 sec)
236
-
237
- Records: 4 Duplicates: 0 Warnings: 0
238
-
239
-
240
-
241
- mysql>
242
-
243
- mysql> select * from BBB where col_date>='2018-01-01';
244
-
245
- +----+------------+
246
-
247
- | id | col_date |
248
-
249
- +----+------------+
250
-
251
- | 2 | 2018-01-01 |
252
-
253
- | 3 | 2018-02-01 |
254
-
255
- | 4 | 2018-03-01 |
256
-
257
- +----+------------+
258
-
259
- 3 rows in set (0.00 sec)
260
-
261
-
262
-
263
- mysql>
264
-
265
-
266
-
267
- ```

13

検証結果の追記

2018/08/16 08:01

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -66,6 +66,8 @@
66
66
 
67
67
  SELECT * FROM BBB WHERE col_date >= 2018-02-01;
68
68
 
69
+ SELECT * FROM BBB WHERE col_date >= '2018-06-01';
70
+
69
71
  (上記のいずれか)
70
72
 
71
73
  ```

12

訂正

2018/08/06 08:51

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -186,8 +186,6 @@
186
186
 
187
187
  +---------------------+
188
188
 
189
- | BBB |
190
-
191
189
  +---------------------+
192
190
 
193
191
  5 rows in set (0.00 sec)

11

修正

2018/08/06 08:27

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -186,15 +186,7 @@
186
186
 
187
187
  +---------------------+
188
188
 
189
- | L_TASK |
189
+ | BBB |
190
-
191
- | M_TEST |
192
-
193
- | M_USER |
194
-
195
- | T_TASK |
196
-
197
- | tb_nagios_fault |
198
190
 
199
191
  +---------------------+
200
192
 

10

追記 検証の追記

2018/08/06 08:00

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -157,3 +157,119 @@
157
157
  (レイアウト崩れが激しかったため、関係のあるカラムの部分だけ切り出しています)
158
158
 
159
159
  ```
160
+
161
+
162
+
163
+ ・データベースを作り直してみての検証
164
+
165
+ 正常に動作します
166
+
167
+ ```Text
168
+
169
+ mysql> use mysqlTest
170
+
171
+ Reading table information for completion of table and column names
172
+
173
+ You can turn off this feature to get a quicker startup with -A
174
+
175
+
176
+
177
+ Database changed
178
+
179
+ mysql>
180
+
181
+ mysql> show tables;
182
+
183
+ +---------------------+
184
+
185
+ | Tables_in_mysqlTest |
186
+
187
+ +---------------------+
188
+
189
+ | L_TASK |
190
+
191
+ | M_TEST |
192
+
193
+ | M_USER |
194
+
195
+ | T_TASK |
196
+
197
+ | tb_nagios_fault |
198
+
199
+ +---------------------+
200
+
201
+ 5 rows in set (0.00 sec)
202
+
203
+
204
+
205
+ mysql> create table BBB(
206
+
207
+ -> `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
208
+
209
+ -> `col_date` date NOT NULL DEFAULT '1970-01-01' COMMENT '日付'
210
+
211
+ -> );
212
+
213
+ Query OK, 0 rows affected (0.03 sec)
214
+
215
+
216
+
217
+ mysql>
218
+
219
+ mysql>
220
+
221
+ mysql>
222
+
223
+ mysql> show tables;
224
+
225
+ +---------------------+
226
+
227
+ | Tables_in_mysqlTest |
228
+
229
+ +---------------------+
230
+
231
+ | BBB |
232
+
233
+ +---------------------+
234
+
235
+ 6 rows in set (0.00 sec)
236
+
237
+
238
+
239
+ mysql> insert into BBB(col_date) values
240
+
241
+ -> ('2017-12-01'),('2018-01-01'),('2018-02-01'),('2018-03-01');
242
+
243
+ Query OK, 4 rows affected (0.00 sec)
244
+
245
+ Records: 4 Duplicates: 0 Warnings: 0
246
+
247
+
248
+
249
+ mysql>
250
+
251
+ mysql> select * from BBB where col_date>='2018-01-01';
252
+
253
+ +----+------------+
254
+
255
+ | id | col_date |
256
+
257
+ +----+------------+
258
+
259
+ | 2 | 2018-01-01 |
260
+
261
+ | 3 | 2018-02-01 |
262
+
263
+ | 4 | 2018-03-01 |
264
+
265
+ +----+------------+
266
+
267
+ 3 rows in set (0.00 sec)
268
+
269
+
270
+
271
+ mysql>
272
+
273
+
274
+
275
+ ```

9

追記 修正 検証を行ったクエリの追加

2018/08/06 07:59

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -84,9 +84,9 @@
84
84
 
85
85
  | 000000003 | 2018-03-01 |
86
86
 
87
- | 000000004 | 2018-03-01 |
87
+ | 000000004 | 2018-04-01 |
88
88
 
89
- | 000000005 | 2018-04-01 |
89
+ | 000000005 | 2018-05-01 |
90
90
 
91
91
  +-----------+------------+
92
92
 

8

追記

2018/08/06 07:49

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -60,7 +60,11 @@
60
60
 
61
61
  SELECT * FROM BBB WHERE date(col_date) >= 2018/02/01;
62
62
 
63
+ SELECT * FROM BBB WHERE col_date >= 2018/02/01;
64
+
63
65
  SELECT * FROM BBB WHERE date(col_date) >= 2018-02-01;
66
+
67
+ SELECT * FROM BBB WHERE col_date >= 2018-02-01;
64
68
 
65
69
  (上記のいずれか)
66
70
 

7

誤字の修正(クエリ結果の idとcol_dateの不整合があった為)

2018/08/06 07:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  | 000000001 | 2018-01-01 |
44
44
 
45
- | 000000002 | 2018-03-01 |
45
+ | 000000003 | 2018-03-01 |
46
46
 
47
47
  +-----------+------------+
48
48
 

6

書式修正

2018/08/06 07:40

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -144,8 +144,12 @@
144
144
 
145
145
  ・SHOW CREATE TABLE BBBの結果です。
146
146
 
147
+ ```Text
148
+
147
149
  `id` int(11) NOT NULL AUTO_INCREMENT,
148
150
 
149
151
  `col_date` date NOT NULL DEFAULT '0000-00-00' COMMENT '日付',
150
152
 
151
153
  (レイアウト崩れが激しかったため、関係のあるカラムの部分だけ切り出しています)
154
+
155
+ ```

5

追記 SHOW CREATE TABLE BBBの結果

2018/08/06 07:37

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -138,4 +138,14 @@
138
138
 
139
139
  【追記】
140
140
 
141
- 反対側にdate()をかけた場合は、2件しかSELECTされません。
141
+ 反対側にdate()をかけた場合は、2件しかSELECTされません。
142
+
143
+
144
+
145
+ ・SHOW CREATE TABLE BBBの結果です。
146
+
147
+ `id` int(11) NOT NULL AUTO_INCREMENT,
148
+
149
+ `col_date` date NOT NULL DEFAULT '0000-00-00' COMMENT '日付',
150
+
151
+ (レイアウト崩れが激しかったため、関係のあるカラムの部分だけ切り出しています)

4

追記

2018/08/06 07:36

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -133,3 +133,9 @@
133
133
  お申し付け下さい。
134
134
 
135
135
  宜しくお願い致します。
136
+
137
+
138
+
139
+ 【追記】
140
+
141
+ 反対側にdate()をかけた場合は、2件しかSELECTされません。

3

追記 反対側にdate()をかませる

2018/08/06 07:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -27,6 +27,8 @@
27
27
  あるいは
28
28
 
29
29
  SELECT * FROM BBB WHERE col_date >= '2018/01/01';
30
+
31
+ SELECT * FROM BBB WHERE col_date >= date('2018/01/01');
30
32
 
31
33
  ```
32
34
 

2

追記

2018/08/06 07:32

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -24,6 +24,10 @@
24
24
 
25
25
  SELECT * FROM BBB WHERE col_date >= '2018-01-01';
26
26
 
27
+ あるいは
28
+
29
+ SELECT * FROM BBB WHERE col_date >= '2018/01/01';
30
+
27
31
  ```
28
32
 
29
33
  ```Text
@@ -49,6 +53,14 @@
49
53
  ```SQL
50
54
 
51
55
  SELECT * FROM BBB WHERE date(col_date) >= '2018-01-01';
56
+
57
+ あるいは
58
+
59
+ SELECT * FROM BBB WHERE date(col_date) >= 2018/02/01;
60
+
61
+ SELECT * FROM BBB WHERE date(col_date) >= 2018-02-01;
62
+
63
+ (上記のいずれか)
52
64
 
53
65
  ```
54
66
 

1

追記

2018/08/06 07:31

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -111,3 +111,11 @@
111
111
   
112
112
 
113
113
  ####お手数ですが、ご教示頂けますと幸いです。宜しくお願い申し上げます。
114
+
115
+
116
+
117
+ 不足している情報がございましたら、追記させていただきますので、
118
+
119
+ お申し付け下さい。
120
+
121
+ 宜しくお願い致します。