SQL Server:GETDATE()、SYSDATETIME()、CURRENT_TIMESTAMP、datetimeデータ型を使いこなす
MySQLのNOW()関数とSQL Serverでの代替方法
SQL Serverには、NOW()関数と完全に一致する関数はありません。しかし、いくつかの代替方法があります。
**GETDATE()**関数は、現在の時刻と日付を取得する最も一般的な方法です。NOW()関数と同様に、タイムゾーン情報は含まれません。
SELECT GETDATE();
**SYSDATETIME()**関数は、現在の時刻と日付に加えて、タイムゾーン情報も取得します。
SELECT SYSDATETIME();
CURRENT_TIMESTAMP
CURRENT_TIMESTAMPは、Transact-SQLで使用されるキーワードで、現在の時刻と日付を取得します。
SELECT CURRENT_TIMESTAMP;
datetime データ型
datetime データ型を使用して、現在の時刻と日付を直接リテラルとして指定することもできます。
DECLARE @date datetime;
SET @date = GETDATE();
INSERT INTO MyTable (DateColumn) VALUES (@date);
SQL Serverには、MySQLのNOW()関数と完全に一致する関数はありません。しかし、GETDATE()関数、SYSDATETIME()関数、CURRENT_TIMESTAMPキーワード、datetimeデータ型など、いくつかの代替方法があります。これらの代替方法はいずれも、現在の時刻と日付を取得するために使用できます。
-- 1. GETDATE()関数
SELECT GETDATE();
-- 2. SYSDATETIME()関数
SELECT SYSDATETIME();
-- 3. CURRENT_TIMESTAMP
SELECT CURRENT_TIMESTAMP;
-- 4. datetime データ型
DECLARE @date datetime;
SET @date = GETDATE();
INSERT INTO MyTable (DateColumn) VALUES (@date);
このコードを実行すると、現在の時刻と日付が出力されます。
補足
- 上記のコードは、SQL Server Management Studio (SSMS) などのツールを使用して実行できます。
- datetime データ型を使用して現在の時刻と日付を直接リテラルとして指定する場合、SET ステートメントを使用して変数に代入する必要があります。
- INSERT ステートメントを使用してレコードをテーブルに挿入する場合、DateColumn 列のデータ型は datetime である必要があります。
その他の代替方法
**GETUTCDATE()**関数は、現在の協定世界時 (UTC) を取得します。タイムゾーン情報が含まれていないため、世界中のどこからでも同じ値を返します。
SELECT GETUTCDATE();
SELECT CURRENT_TIME;
**DATETIMEFROMPARTS()**関数は、個々のコンポーネント (年、月、日、時、分、秒) から datetime 値を生成します。
SELECT DATETIMEFROMPARTS(2024, 4, 3, 7, 40, 0);
**CONVERT()**関数は、文字列を datetime 値に変換するために使用できます。
SELECT CONVERT(datetime, '2024-04-03 07:40:00');
上記以外にも、さまざまな方法で現在の時刻と日付を取得することができます。これらの方法は、それぞれ異なる利点と欠点があります。ニーズに合った方法を選択する必要があります。
sql sql-server