前回は、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のバージョンに依存します。