回答編集履歴

3

ロジック一部修正。

2015/02/20 18:24

投稿

HachiyaKouya
HachiyaKouya

スコア85

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ```lang-<SQL>
6
6
 
7
- DELETE FROM dbo.SOKUTEI WHERE 日付 < CONVERT(VARCHAR(8),DATEADD(y,-1,GETDATE()),112);
7
+ DELETE FROM dbo.SOKUTEI WHERE 日付 < CONVERT(VARCHAR(8),DATEADD(y,-2,GETDATE()),112);
8
8
 
9
9
  ```
10
10
 

2

誤字脱字の修正です。疲れてる(;´Д`)

2015/02/20 18:24

投稿

HachiyaKouya
HachiyaKouya

スコア85

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ```
10
10
 
11
- CONVERT関数の第引数の「111」は日付の書式で色々種類があります。下記リンク先を参照してください。
11
+ CONVERT関数の第3引数の「111」は日付の書式で色々種類があります。下記リンク先を参照してください。
12
12
 
13
13
  [CONVERTの日付書式設定(MSDN)](https://msdn.microsoft.com/ja-jp/library/ms187928.aspx)
14
14
 

1

誤字脱字の修正と若干気持ち的なコメントを追加しました。

2015/02/19 15:27

投稿

HachiyaKouya
HachiyaKouya

スコア85

test CHANGED
@@ -1,4 +1,4 @@
1
- 書き方らSQLServerと推測しますが、こんな感じでしょうか。
1
+ 書き方らSQLServerと推測しますが、こんな感じでしょうか。
2
2
 
3
3
 
4
4
 
@@ -12,7 +12,7 @@
12
12
 
13
13
  [CONVERTの日付書式設定(MSDN)](https://msdn.microsoft.com/ja-jp/library/ms187928.aspx)
14
14
 
15
- CONVERT関数でVARCHARのサイズを指定していますが、こうすると収まらない分は勝手に切られます。
15
+ CONVERT関数でVARCHARのサイズを指定していますが、こうすると返還後のサイズに収まらない分は勝手に切られます(←これが思いのほか便利だったりします)
16
16
 
17
17
  上記SQLは、日付がyyyymmdd形式であることを想定しています。
18
18
 
@@ -28,6 +28,8 @@
28
28
 
29
29
  どうしてもDATE型で比較したいのであれば、両辺にCONVERT(DATE,[項目名])とかしてあげるとよいかと思います。
30
30
 
31
- ただし、テーブルのデータ量が多い場合はWHERE句での型変換は避けたほうが良いです。
31
+ 注意点と、テーブルのデータ量が多い場合はWHERE句での型変換は避けたほうが良いです。
32
32
 
33
33
  パフォーマンスが劇的に落ちます。
34
+
35
+ ストアドにできるのであれば、ストアド内で変数を宣言して利用するほうが実行速度が上がります。