データベース千夜一夜第22回

SQLと関数~文字列関数と日付関数 長谷川裕行
有限会社 手國堂

日付関数

日付/時刻型のデータを扱い、今日の日時や期間(時間や日数、年数)を計算する関数です。


- 現在の日時を取得~GETDATE -

機能:現在の日付と時刻を日付時刻形式で返します。

書式:GATDATE()

戻り値:日付/時刻型


- 日時の差(期間)を計算~DATEDIFF -

機能:2つの日付/時刻データの差を返します。

書式:DATEDIFF (<形式>, <開始>, <終了>)

引数
< 形式>:取得したい日時データの形式を、以下の記号で指定します。
    年   yy、yyyy
    月   mm、m
    日   dd、d
    週   wk、ww
    時   hh
    分   mi、n
    秒   ss、s
    ミリ秒 ms
< 開始>:計算の開始日時
< 終了>:計算の終了日時

戻り値:int型

例:テーブル「得意先_mr」から顧客の現在の年齢を表示します。

  SELECT お客様ID, 氏名, DATEDIFF(yy, 生年月日, GETDATE()) AS 年齢
  FROM 得意先_mr




- 日時を加算~DATEADD -

機能:日付/時刻に指定した期間を加えた新しい日付/時刻を返します。

書式:DATEADD (<形式>, <期間>, <開始>)

引数
< 形式>:取得したい日時データの形式を、以下の記号で指定します。
    年   yy、yyyy
    月   mm、m
    日   dd、d
    週   wk、ww
    時   hh
    分   mi、n
    秒   ss、s
    ミリ秒 ms
< 期間>:加算する日時
< 開始>:加算対象の日時

戻り値:日付/時刻型



- 特定要素の取り出し~DATEPART -

機能:日付/時刻型データから年のみ、月のみなど指定した部分だけを取り出して返します。

書式:DATEPART(<形式> ,<日時>)

引数
< 形式>:取得したい日時データの形式を、以下の記号で指定します。
    年   yy、yyyy
    月   mm、m
    日   dd、d
    週   wk、ww
    時   hh
    分   mi、n
    秒   ss、s
    ミリ秒 ms
< 日時>:取り出す元になる日時データ

戻り値:int型

例:テーブル「得意先_mr」から顧客の生まれた年(西暦年)だけを表示します。

  SELECT お客様ID, 氏名, DATEPART(yyyy, 生年月日) AS 生年
  FROM 得意先_mr

また、WHERE句の条件式に用いれば「10月生まれの顧客」だけを抽出することもできます。

  SELECT お客様ID, 氏名
  FROM 得意先_mr
  WHERE DATEPART(mm, 生年月日) = 10




- 特定要素の取り出し~DAY、MONTH、YEAR -

日付データから特定の要素を取り出す関数には、DAY、MONTH、YEARの3つがあります。

・DAY
機能:指定した日付の「日」を返します。
書式:DAY(<日付>)
戻り値:int型

・MONTH
機能:指定した日付の「月」を返します。
書式:MONTH(<日付>)
戻り値:int型


・YEAR
機能:指定した日付の「年」を返します。
書式:YEAR(<日付>)
戻り値:int型


これらはDATEPART関数のシノニム(互換性維持のための置き換え)であり、それぞれ以下のような関係になっています。

DAY(<日付>)  = DATEPART(dd, <日付>)
MONTH(<日付>) = DATEPART(mm, <日付>)
YEAR(<日付>)  = DATEPART(yy, <日付>)




トップページ
関数の互換性
文字列関数
日付関数
現在の日時を取得~GETDATE
日時の差(期間)を計算~DATEDIFF
日時を加算~DATEADD
特定要素の取り出し~DATEPART
特定要素の取り出し~DAY、MONTH、YEAR
+演算子による文字列と日時の加算
あとがき
Copyright © MESCIUS inc. All rights reserved.