はじめに
仕事でSQLServerを扱っており、SELECTやプロシージャを作成する時に日付型を使うことが多いのですが、よく忘れて調べ直すことが多いので、まとめてみました。
YYYYMMDDの形式で表示
まずGETDATE()で2018-04-10 19:00:00.000のように表示されます。
これを2018-04-10にするためには、、
/* INT型の変数定義 */
DECLARE @TODAY AS INT;
/* -を置換して変数に代入 */
SET @TODAY = REPLACE(CONVERT(date,GETDATE()),'-','');
→ 20180410 と今日の日付が表示される
それでは、これを一緒にSELECTしてみます。
/* 変数定義 */
DECLARE @TODAY AS INT;
SET @TODAY = REPLACE(CONVERT(date,GETDATE()),'-','');
SELECT
@TODAY [YYYYMMDD], --YYYYMMDD形式
GETDATE() [現在時刻] --変換前
▼実行結果
YYYYMMDD | 現在時刻 | |
---|---|---|
1 | 20180410 | 2018-04-10 19:54:32.290 |
今回は一度変数に入れていますが、直接SELECT文に書いても大丈夫です。
様々な形式で表示
Salesforceに取り込む時は、この型で取り込むので個人的によく使います。
SELECT
FORMAT(CONVERT(date,getdate(),111),'yyyy-MM-ddT00:00:00.000Z') [好きな形式で]
▼実行結果
好きな形式で | |
---|---|
1 | 2018-04-10T00:00:00.000Z |
数値かどうかを判断する(数値だったら1を返す)
◾️ISNUMIC(値)
値が数値の場合1、数値でない場合0を返します。
個人的には、プロシージャで数値以外を入れてはいけない時、CASE文で数値以外の場合ブランクにする、といったような使い方をしています。
SELECT
CASE ISNUMERIC(1)
WHEN '1' THEN '数値です'
ELSE '数値ではないです'
END [TEST1]
,CASE ISNUMERIC('a')
WHEN '1' THEN '数値です'
ELSE '数値ではないです'
END [TEST2]
▼実行結果
TEST1 | TEST2 | |
---|---|---|
1 | 数値です | 数値ではないです |
ちなみにSQLServerのCASE文はこのようなイメージです。
CASE 対象の項目、値
WHEN この値のとき THEN こう表示する
ELSE 当てはまらなかったらここを表示
END [項目名]