SQL道場 日付時刻関数 DATEADD関数

SQLで日付の足し算をするDATEADD関数について記載しています。

対応データベース:SQLServer Access

DATEADD関数の文法

SELECT DATEADD(日付要素,日付,加算値) FROM テーブル
SELECT DATEADD(date element, date, addition value) FROM table
引数
Arguments
日付要素
Date element
数値型
numeric type
日付
Date
文字列型
String type
加算値
Addition value
数値型
numeric type
返値
return value
文字型 計算後の日付が戻ります。
Returns the date after character type calculation

SQLServer

引数
Arguments
日付要素
Date element
数値型
numeric type
日付
Date
以下のいずれかの値で解決できる式
(An expression that can be resolved by one of the following values:)
・date
・datetime
・datetimeoffset
・datetime2
・smalldatetime
・time
加算値
Addition value
数値型
numeric type
返値
return value
intYEAR は DATEPART (year、date) と同じ値を返します。
日付には、時刻部分のみが含まれる、戻り値は基準年を 1900 年にです。
YEAR returns the same value as DATEPART (year, date).
The date contains only the time part, and the return value is 1900 for the base year.

DATEADD関数は指定された日付の日付要素に対して加算を行い日付を戻します。数値にマイナス値を指定した場合は日付の日付要素から減算します。

SQL Server公式

SQL Server、Accessの日付の要素

SQL Server省略形
abbreviation
Access
yearyy,yyyyyyyy
四半期quarterqq,qq
monthmm,mm
年始からの通算日dayofyeardy,yy
daydd,dd
weekwk,wwww
曜日weekdaydww
時間hourhhh
minutemi,nn
secondss,ss
ミリ秒millisecondms

Accessの場合は日付要素を’m’のように文字列で指定します。

実行例

SQLServerの実行例

1か月後の日付を求める

/* SQL Server 2010/04/30の1か月後の日付を求めるサンプル */
SELECT DATEADD(MONTH,1,'2010-04-30');  
DATEADD関数サンプル実行結果

1か月前の日付を求める

/* SQL Server 2010/04/30の1か月前の日付を求めるサンプル */
SELECT DATEADD(MONTH,-1,'2010-04-30');  
DATEADD関数サンプル実行結果

現在の日付の3日前の日付を取得

/* SQL Server 現在の日付の3日前の日付を取得するサンプル */
SELECT dateadd(day,-3,getdate())
DATEADD関数サンプル実行結果

3時間後を取得する

/* SQL Server 現在の日付の3時間後を取得するサンプル */
select DATEADD(HOUR,3,'2023-05-01 11:00:00')
DATEADD関数サンプル実行結果

書式を指定する(年月日のみ表示)

/* SQL Server 書式を指定する(年月日のみ表示)サンプル */
select FORMAT(DATEADD(DAY,3,GETDATE()),'yyyy/MM/dd')
DATEADD関数サンプル実行結果