• 検索結果がありません。

2. 次に、GETDATE 関数を利用して「現在の日付と時刻」を取得し、それを「emp」テーブル の「hiredate」(入社日)列へ格納してみます。

INSERT INTO emp

VALUES (12, 'yyy', 9999, GETDATE(), 20) SELECT * FROM emp WHERE empno = 12

現在の日付と時刻が、「hiredate」列へ格納されていることを確認できます。

YEAR 関数で年のみを取得

1. 次に、YEAR 関数を利用して、「hiredate」(入社日)列の “年だけ” を取得してみます。

SELECT YEAR(hiredate), * FROM emp

このように YEAR 関数を利用すると、「1998」や「1999」など年だけを取得できるようにな ります。なお、取得した年は、int(4 バ゗ト整数)型です。

MONTH 関数で月のみを取得

1. 次に、MONTH 関数を利用して、「hiredate」(入社日)列の “月だけ” を取得してみます。

SELECT MONTH(hiredate), * FROM emp

YEAR(hiredate) によって 入社日のうちの "年" を取得

このように MONTH 関数を利用すると、月だけを取得できるようになります。また、YEAR 関 数と同様、取得した値は int 型です。

DATEPART による日付と時刻の部分取得

YEAR と MONTH 関数は、年と月の取得でしたが、DATEPART 関数を利用すると、日付と時刻 の任意の一部分を取得できるようになります。Part は「部分」「一部」という意味です。構文は、

次のとおりです。

DATEPART( datepart, 日付 )

第 1 引数の datepart を、「year」と指定すれば "年" を取得でき、YEAR 関数と同じ結果を取 得できます。また、「month」とすれば "月" で MONTH 関数と同じ結果、「day」と指定すれば

“日” 、「hour」と指定すれば “時間”、「minute」と指定すれば “分” を取得できるようになりま す。

それでは、これを試してみましょう。

1. DATEPART 関数を利用して、「emp」テーブルの「hiredate」から "日" と "時間" を取り 出してみましょう。

SELECT DATEPART(day, hiredate), DATEPART(hour, hiredate), * FROM emp

MONTH(hiredate) によって 入社日のうちの "月" を取得

DATEPART(day, hiredate) DATEPART(hour, hiredate)

このように DATEPART 関数を利用すると、日付と時刻の任意の一部分を取得できるように なります。

Note: DATEPART 関数で指定できるそのほかの datepart

DATEPART 関数の第 1 引数(datepart)には、ほかにも指定できるものがあります。例えば、「dayofyear」で

“その年の 1 月 1 日から数えた日にち” 、「week」で “その年の何週目か” などを取得できます。これらの詳細は、

SQL Server 2008 のオンラ゗ン ブック(Books Online)の以下のトピックへ詳しく記載されています。

「データベース エンジン」→「テクニカル リファレンス」→「Transact-SQL リファレンス」→「DATEPART」

DATEADD による日付の加算と減算

DATEADD 関数を利用すると、日付と時刻の任意の部分で加算と減算を行えるようになります。

構文は、次のとおりです。

DATEADD( datepart, 数値,日付)

第 1 引数の datepart は、DATEPART 関数のときと同じように、「year」や「month」など加算 や減算の対象にしたいものを指定します。第 2 引数の数値は、第 3 引数に対して加算または減算 したい値を指定します。減算の場合は、マ゗ナス付きの数値を記述します。

それでは、これを試してみましょう。

1. まずは、「emp」テーブルの「hiredate」(入社日)列へ「10 年加算」した値を取得してみ ます。

SELECT DATEADD(year, 10, hiredate), * FROM emp

第 1 引数へ “year”、 第 2 引数へ “10” を指定することで、hiredate(入社日)の “年” に 対して “+10” した結果を取得することができます。

2. 次に、DATEADD 関数を WHERE 句で利用してみましょう。次のように記述して、“現在、入 社してから 10 年以上経っている社員” を取得してみます。

SELECT * FROM emp

WHERE DATEADD(year, 10, hiredate) < GETDATE()

このように関数は、WHERE 句の条件式で利用することもできます。

DATEADD(yaer, 10, hiredate) で入社日の "年" に +10 加算