【日付フォーマット】
■現在日付
select GETDATE()
⇒2014-06-12 20:20:25.650
■YYYYMMDD
SELECT CONVERT(NVARCHAR, GETDATE(), 112);
⇒20140612
■YYMM
SELECT SUBSTRING(CONVERT(NVARCHAR, GETDATE(), 112),3,4);
⇒1405
[参考] http://msdn.microsoft.com/ja-jp/library/ms187928.aspx
【日付の加減算】
■日付-1
SELECT DATEADD(day, -1, '2014/06/13') --2014-06-12
SELECT CONVERT(VARCHAR,DATEADD(day, 1, '2014/06/13'),112) --20140612
■日付-1年前(YYYYMMDD形式)
SELECT CONVERT(VARCHAR,DATEADD(yyyy,-1,GETDATE()),112)
■日付-1月前(YYYYMMDD形式)
SELECT CONVERT(VARCHAR,DATEADD(mm,-1,GETDATE()),112)
■日付差分出力
select DATEDIFF(MONTH, '2015/04/01', '2015/06/01') AS datecount
結果:2 (2ヵ月)
【その他】
■当月月初の日
SELECT CONVERT(DATETIME,LEFT(CONVERT(NVARCHAR, GETDATE(), 112),6) + '01')
■前月末日
SELECT DATEADD(DAY,-1,CONVERT(DATETIME,LEFT(CONVERT(NVARCHAR, GETDATE(), 112),6) + '01'))
■前日日付の0時0分0秒を取得
SELECT DATEADD(DAY,-1,CONVERT(DATETIME,(CONVERT(VARCHAR,GetDate(),112))))
【日付項目の抽出】
■datetime型の抽出
例)2014/06/14に更新されたデータの抽出
SET @dateFrom = '2014-06-14';
SET @dateTo = '2014-06-14';
SELECT * FROM TABLEA
WHERE @dateFrom <= UPDDATE AND UPDDATE < DATEADD(day, 1, @dateTo)
※UPDDATEはdatetime型。
変数はNVARCHAR。変数に与える形式はyyyy-mm-ddでもyyyy/mm/ddでもよい。
datetime型と比較時に変数の時分秒部分00:00:00になるので、
ToはDATEADDで+1日して、翌日00:00:00より以前、という条件で抽出している。