プログラ生活

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

【SQL Server(連載)】日付型 -42-

www.pon-x.jp

今回は、日付型の扱い方を紹介していきます。

CONVERT関数

CONVERT関数は、データ型の変更を行ってくれます。
例えばこんな感じ。

 SELECT 
    GETDATE(),
    CONVERT(NVARCHAR, GETDATE())

GETDATE()は、現時点の日時を取得してくれるもので、CONVERT(NVARCHAR, GETDATE())は、現在日時を文字型に変換したということになります。
f:id:hanabusa-snow:20210112090504p:plain

国ごとの表記法

年月日は国ごとに表記法が異なります。
そこで、CONVERT関数の第3引数に指定することによって制御可能です。
例えばこんな感じ

DECLARE @Date DATETIME = GETDATE();

SELECT   
         CONVERT(NVARCHAR, @Date, 101) AS '米国4桁',
         CONVERT(NVARCHAR, @Date, 1) AS '米国2桁',
         CONVERT(NVARCHAR, @Date, 111) AS '日本4桁',
         CONVERT(NVARCHAR, @Date, 11) AS '日本2桁'

f:id:hanabusa-snow:20210112090837p:plain

他の国など詳しくは以下を見てみよう。

docs.microsoft.com

日時の加減

基準となる日から、日にちや時間をずらすことも可能だ。
例えば、本日から日にちをずらしてみる。

DECLARE @Today DATETIME = GETDATE()
DECLARE @Day_01 DATETIME = dateadd(DAY,1,GETDATE())
DECLARE @Week_01 DATETIME = dateadd(WEEK,-1,GETDATE())
DECLARE @Month_01 DATETIME = dateadd(MONTH,1,GETDATE())
DECLARE @Quarter_01 DATETIME = dateadd(QUARTER,-1,GETDATE())
DECLARE @Year_01 DATETIME = dateadd(YEAR,10,GETDATE())

SELECT 
    CONVERT(NVARCHAR, @Today, 111) AS '本日',
    CONVERT(NVARCHAR, @Day_01, 111) AS '1日後',
    CONVERT(NVARCHAR, @WEEK_01, 111) AS '1週前',
    CONVERT(NVARCHAR, @Month_01, 111) AS '1月後',
    CONVERT(NVARCHAR, @Quarter_01, 111) AS '3月前',
    CONVERT(NVARCHAR, @Year_10, 111) AS '10年後'

f:id:hanabusa-snow:20210112091842p:plain

時間もこの通り

DECLARE @Today DATETIME = GETDATE()
DECLARE @Hour_01 DATETIME = dateadd(HOUR,1,GETDATE())
DECLARE @Minutie_01 DATETIME = dateadd(MINUTE,-1,GETDATE())
DECLARE @Second_01 DATETIME = dateadd(SECOND,1,GETDATE())


SELECT 
    @Today AS '現在',
    @Hour_01 AS '1時間後',
    @Minutie_01 AS '1分前',
    @Second_01 AS '1秒後'

f:id:hanabusa-snow:20210112092100p:plain







以上今回はここまで。