日付関数は、その名のとおり日付型の値を扱うための関数です。現在のシステム日付を求めたり、2つの日付から差を算出、あるいは日付の足し算を行うといったことが可能です。また、日付関数はWHERE句の中でも利用できるため、検索条件としても活用できます。日付関数は日付型の値を扱う際に非常に使い勝手がよいため、その動作を確認しておきましょう。
日付関数には、主に次のような関数が存在します。
それでは、それぞれの関数について具体的な利用法を確認しましょう。
GETDATE関数は、現在のシステム日時を取得するための関数です。実行するたびに、値が更新され現在日時が表示されます。
具体的な利用法は次のような形です。
SELECT COUNT(*) 売上件数,GETDATE() データ取得日時 FROM Sales.SalesOrderHeader 売上件数 データ取得日時 ------------------------- 31465 2007-04-11 21:43:39.597
DATEADD関数は、与えられた日付値に対して、加算を行います。日付を構成する値として、年月日、秒、曜日、といった要素が考えられますが、加算を行う際は、どのような要素に対して加算を行うのか、パラメータを指定します。DATEADD関数は次のような構文で利用します。
DATEADD(datepart,加算値,日付)
datepartは日付に対して加算する際に指定するパラメータです。パラメータには次のようなものが存在します。
datepart | 省略名 | |
---|---|---|
year | yy、yyyy | |
month | mm、m | |
day | dd、d | |
weekday | dw、w | |
hour | hh | |
minute | mi、n | |
second | ss、s | |
次の例では、システム日付から30日後の日付を求めています。
SELECT DATEADD(d,30,GETDATE()) 日付加算結果 日付加算結果 --------------------------- 2007-05-11 21:55:10.000
DATEDIFF関数は、2つの日付値から差異を求める際に利用します。DATEDIFF関数は、DATEADD関数と同じくパラメータを利用し、差異をどのような値で返すかを指定します。4月11日から6月3日が何週間離れているか、といった計算を行うことができます。
次の例では、OrderDate列の値とシステム日付の差が1000未満の行を表示しています。
SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE DATEDIFF(d,OrderDate,GETDATE()) < 1000 SalesOrderID ---------- 74619 74620 74621
YEAR/MONTH/DAY関数は、与えられた日付から年月日の要素を取り出すために使用します。
次の例では、システム日付より、それぞれ年月日を求めています。
SELECT YEAR(GETDATE()) システム年, MONTH(GETDATE()) システム月, DAY(GETDATE()) システム日 システム年 システム月 システム日 ----------------------------------- 2007 4 11
DATEPART関数は、日付から特定の値要素を取得する際に利用します。DATEADD関数やDATEDIFF関数と同じくパラメータを使用し、抜き出す値を指定します。YEAR/MONTH/DAY関数と同じ結果をDATEPART関数でも得られます。
次の例では、システム日付より、それぞれ年月日を求めています。
SELECT DATEPART(yy,GETDATE()) システム年, DATEPART(mm,GETDATE()) システム月, DATEPART(dd,GETDATE()) システム日 システム年 システム月 システム日 ----------------------------------- 2007 4 11
Copyright © ITmedia, Inc. All Rights Reserved.