【ハウツー】

Transact-SQLの関数を理解しよう - 日付/数学編

1 日時妥当性、現在日時

    青木淳夫  [2008/10/28]

    前回は、SQL ServerのTransact-SQL(T-SQL)で、文字列を操作する関数について紹介しました。本編では、日付と数値を操作する関数について紹介していきます。

    日付時刻に関する関数

    それでは、日付時刻の妥当性をチェックしたり、現在時刻を取得する関数からみていきましょう。

    日付の妥当性チェックと現在時刻を取得する関数の一覧

    関数名 戻り値 説明
    ISDATE int 日付または時刻として有効であるかを返します。1:有効、0:無効
    GETDATE datetime 現在時刻を返します
    CURRENT_TIMESTAMP datetime 現在時刻を返します(ANSI SQL)
    GETUTCDATE datetime 現在時刻を返します(UTC時刻:協定世界時)
    SYSDATETIME datetime2(7) 現在時刻を返します。SQL Server 2008以降
    SYSDATETIMEOFFSET datetimeoffset(7) 現在時刻を返します(タイムゾーンオフセット含む)。SQL Server 2008以降
    SYSUTCDATETIME datetime2 現在時刻を返します(UTC時刻:協定世界時)。SQL Server 2008以降

    日付の妥当性チェック(ISDATE)

    日付時刻として妥当かどうかをチェックするには、ISDATE関数を利用します。日付時刻として妥当な場合は1、妥当でない場合は0が返ります。

    ISDATE関数の実行例

    
    SELECT ISDATE('2008-12-31')
    /* → 1 (有効) */
    
    SELECT ISDATE('2008-12-32')
    /* → 0 (無効) */
    

    現在時刻(GETDATE、CURRENT_TIMESTAMP、GETUTCDATE等)

    現在の日時を取得するには、GETDATE関数、CURRENT_TIMESTAMP関数を使用します。これらの関数はタイムゾーンに設定された時刻(日本時刻)を返します。これに対し、GETUTCDATE関数は協定世界時を返します。 SQL Server 2008からは、SYSDATETIME()、SYSDATETIMEOFFSET()、SYSUTCDATETIME()といった関数を使用して、より精度の高い現在日時を取得することができます。

    GETDATE関数、CURRENT_TIMESTAMP関数、GETUTCDATE関数等の実行例

    
    SELECT GETDATE()
    /* → 2008-09-21 12:02:25.687 (現在時刻) */
    
    SELECT CURRENT_TIMESTAMP
    /* → 2008-09-21 12:02:25.687 (現在時刻) */
    
    SELECT GETUTCDATE()
    /* → 2008-09-21 03:02:25.687 (協定世界時)*/
    
    
    --以下、SQL Server 2008以降
    SELECT SYSDATETIME()
    /* → 2008-09-21 12:02:25.6870000 (高精度の現在時刻) */
    
    SELECT SYSDATETIMEOFFSET()
    /* → 2008-09-21 12:02:25.6870000 +09:00(高精度でオフセット付の現在時刻) */
    
    SELECT SYSUTCDATETIME()
    /* → 2008-09-21 03:02:25.6870000 (高精度の協定世界時)*/
    

    これらの6つの関数は、SQL Serverが実行されているコンピュータの日時を返します。そのため、時刻の精度はハードウェアとOSのバージョンに依存します。

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン