問題:
T-SQLで現在の日付と時刻を取得したいが、タイムゾーンをオフセットしたくない。
解決策:
GETDATE()、CURRENT_TIMESTAMP、およびSYSDATETIME()を使用して、タイムゾーンオフセットなしで現在の日付と時刻を取得します。最初の2つの関数を使用すると、現在の時刻をより低い精度で取得できます。 (GETDATE()はT-SQL関数ですが、CURRENT_TIMESTAMPはSQL標準関数です。どちらの関数も同じデータ型を返します)。 3番目の関数SYSDATETIME()は、より高精度の時刻を取得します。
SELECT CURRENT_TIMESTAMP ;
クエリの結果は次のとおりです。
2019-08-14 10:01:06.983
ディスカッション:
SQL Serverデータベースでは、CURRENT_TIMESTAMP
関数は、現在の日付と時刻(つまり、そのSQL Serverインスタンスが実行されているマシン上の時刻)をdatetime
として返します。 データ・タイプ。 Datetime
は、最大3秒未満の精度の低い時間です。 (この例では、これは983です。)
GETDATE()はCURRENT_TIMESTAMP
に似ています 同じ結果を返します。違いは、CURRENT_TIMESTAMP
はSQL標準ですが、GETDATE()はSQLServerに固有です。
SELECT GETDATE() ;
もちろん、タイムゾーンオフセットなしでより正確な現在の日付と時刻を取得する場合は、SYSDATETIME()関数を使用できます。この関数はdatetime2
を返します 7つの小数秒のデータ型。以下の例を見てください:
SELECT SYSDATETIME() ;
結果は次のとおりです。
2019-08-14 10:01:06.9754163