プログラ生活

プログラム初学者のためのポイントを書いていこうと思います。たまに脇道それた記事もありますが、息抜きだとおもって気長にお付き合いください。

【SQL Server(連載)】日付型の続き -43-

www.pon-x.jp

前回の続き

今回は、前回お伝え出来なかった日付型の内容の続きを紹介します。

DATEDIFF

2つの日付間の間隔をとることができます。
以外に結構使うんですよね。

年、月、日、時、分、秒ごとに計測してみます。

DECLARE @DATE01 DATETIME = '2021-01-13 10:10:10.010',
        @DATE02 DATETIME = '2023-04-01 00:00:00.000';


SELECT  DATEDIFF(yy, @DATE01, @DATE02) AS yy,
        DATEDIFF(mm, @DATE01, @DATE02) AS mm,
        DATEDIFF(dd, @DATE01, @DATE02) AS dd,
        DATEDIFF(hh, @DATE01, @DATE02) AS hh,
        DATEDIFF(mi, @DATE01, @DATE02) AS mi,
        DATEDIFF(ss, @DATE01, @DATE02) AS ss

こんなかんじです。
f:id:hanabusa-snow:20210113100113p:plain

ISDATE

データが、DATE型なのかを確認します。
さまざまな形式を確かめてみましょう。

DECLARE @DATE01 VARCHAR(30) = '2021-01-13',
        @DATE02 VARCHAR(30) = '01-13-2021',
        @DATE03 VARCHAR(30) = '2021-01-13 00:00:00:000',
        @DATE04 VARCHAR(30) = 123456,
        @DATE05 VARCHAR(30) = '123456';

SELECT  ISDATE(@DATE01) AS '2021-01-13',
        ISDATE(@DATE02) AS '01-13-2021',
        ISDATE(@DATE03) AS '2021-01-13 00:00:00:000',
        ISDATE(@DATE04) AS _INT,
        ISDATE(@DATE05) AS _CHR

こんなかんじです。
f:id:hanabusa-snow:20210113100847p:plain




文字型を日付型として扱うときにはISDATEで確認してから、DATEADDとかDATEDIFFとかやればエラーなく行けそうですね。