回答編集履歴
4
修正
answer
CHANGED
File without changes
|
3
修正
answer
CHANGED
@@ -24,6 +24,6 @@
|
|
24
24
|
from テーブル t1
|
25
25
|
inner join (SELECT DATE_FORMAT(create_time,"%Y-%m") AS ym, ...) t2
|
26
26
|
on t1.xxx=t2.XXX
|
27
|
-
where t2.create_time < cast("2017-11" as
|
27
|
+
where t2.create_time < cast("2017-11" as DATETIME)
|
28
28
|
group by t2.ym
|
29
29
|
```
|
2
修正
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
where t2.ym < "2017-11"
|
19
19
|
group by t2.ym
|
20
20
|
```
|
21
|
-
以下のように、編集前の情報と比較する方がcreate_time をインデックスに含めるなどすれば高速に動作します。
|
21
|
+
以下のように、編集前の情報と比較する方がcreate_time をインデックスに含めるなどすれば高速に動作しますし、暗黙の型変換など入る余地もないですね。
|
22
22
|
```SQL
|
23
23
|
select t2.ym
|
24
24
|
from テーブル t1
|
1
追記
answer
CHANGED
@@ -5,4 +5,25 @@
|
|
5
5
|
項目の名前が日付を意味したものであったり、格納される書式が日付であったとしても、
|
6
6
|
それで勝手に変換されることはありません。
|
7
7
|
|
8
|
-
今回の場合は単に文字列として比較されるのですから、項目に格納される値の書式が統一されている前提であれば問題はありませんね。
|
8
|
+
今回の場合は単に文字列として比較されるのですから、項目に格納される値の書式が統一されている前提であれば問題はありませんね。
|
9
|
+
|
10
|
+
追記
|
11
|
+
---
|
12
|
+
yambejpさんへのコメントによると、全体では以下のようなものだと思います。
|
13
|
+
```SQL
|
14
|
+
select t2.ym
|
15
|
+
from テーブル t1
|
16
|
+
inner join (SELECT DATE_FORMAT(create_time,"%Y-%m") AS ym, ...) t2
|
17
|
+
on t1.xxx=t2.XXX
|
18
|
+
where t2.ym < "2017-11"
|
19
|
+
group by t2.ym
|
20
|
+
```
|
21
|
+
以下のように、編集前の情報と比較する方がcreate_time をインデックスに含めるなどすれば高速に動作します。
|
22
|
+
```SQL
|
23
|
+
select t2.ym
|
24
|
+
from テーブル t1
|
25
|
+
inner join (SELECT DATE_FORMAT(create_time,"%Y-%m") AS ym, ...) t2
|
26
|
+
on t1.xxx=t2.XXX
|
27
|
+
where t2.create_time < cast("2017-11" as date)
|
28
|
+
group by t2.ym
|
29
|
+
```
|