【ハウツー】
前回は、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関数を利用します。日付時刻として妥当な場合は1、妥当でない場合は0が返ります。
SELECT ISDATE('2008-12-31')
/* → 1 (有効) */
SELECT ISDATE('2008-12-32')
/* → 0 (無効) */
現在の日時を取得するには、GETDATE関数、CURRENT_TIMESTAMP関数を使用します。これらの関数はタイムゾーンに設定された時刻(日本時刻)を返します。これに対し、GETUTCDATE関数は協定世界時を返します。 SQL Server 2008からは、SYSDATETIME()、SYSDATETIMEOFFSET()、SYSUTCDATETIME()といった関数を使用して、より精度の高い現在日時を取得することができます。
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のバージョンに依存します。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
目的は一体!? 肥前夢街道に現るバッジ売りの少猫(佐賀県) [12:08 2/11] キャリア |
|
つらい花粉症は対策グッズで乗り切ろう! [12:07 2/11] キャリア |
|
【アジア発!Breaking News】マンションの排水口で銃の試し打ち。階下水漏れで、銃器所持の男らを逮捕。(台湾) [12:07 2/11] キャリア |
|
【エンタがビタミン♪】『逆転裁判』の斎藤工、“ラー油入り手作りチョコ”で女性不信に。 [12:07 2/11] キャリア |
|
本当にうまくいく!カップルの組み合わせは『幹タイプ×枝タイプ=一本の木』 [12:06 2/11] キャリア |