DATEPART 関数を使用して YYYY-MM-DD 形式の日付を取得する
TSQL datetime フィールドから YYYY-MM-DD 形式の日付を取得するには、いくつかの方法があります。 以下では、最も一般的な方法をいくつか紹介します。
方法 1: CONVERT 関数を使用する
CONVERT 関数は、データを別のデータ型に変換するために使用されます。 YYYY-MM-DD 形式の日付を取得するには、次のように CONVERT 関数を使用できます。
SELECT CONVERT(varchar(10), datetime_field, 120) AS formatted_date
FROM table_name;
この例では、datetime_field
フィールドの値を YYYY-MM-DD 形式に変換し、formatted_date
という名前の新しい列に格納します。
SELECT
DATEPART(year, datetime_field) AS year,
DATEPART(month, datetime_field) AS month,
DATEPART(day, datetime_field) AS day
FROM table_name;
この例では、datetime_field
フィールドの年、月、日を取得し、それぞれ year
、month
、day
という名前の新しい列に格納します。 これらの列を連結することで、YYYY-MM-DD 形式の日付を取得できます。
SELECT FORMAT(datetime_field, 'yyyy-MM-dd') AS formatted_date
FROM table_name;
どの方法を使用するかは、要件と好みによって異なります。 CONVERT 関数は最もシンプルで汎用性の高い方法ですが、DATEPART 関数と FORMAT 関数はより柔軟性があります。
上記の方法は、TSQL datetime フィールドから YYYY-MM-DD 形式の日付を取得する最も一般的な方法です。 その他の方法としては、以下のようなものがあります。
- STRING_AGG 関数を使用して、複数の列を連結する
- SUBSTRING 関数を使用して、日付文字列の一部を抽出する
-- サンプルテーブル
CREATE TABLE dbo.TestTable
(
ID INT,
DateTimeCol DATETIME
);
-- データ挿入
INSERT INTO dbo.TestTable (ID, DateTimeCol) VALUES (1, '2023-12-31');
INSERT INTO dbo.TestTable (ID, DateTimeCol) VALUES (2, '2024-01-01');
-- CONVERT 関数を使用する
SELECT CONVERT(varchar(10), DateTimeCol, 120) AS FormattedDate
FROM dbo.TestTable;
-- DATEPART 関数を使用する
SELECT
DATEPART(year, DateTimeCol) AS Year,
DATEPART(month, DateTimeCol) AS Month,
DATEPART(day, DateTimeCol) AS Day
FROM dbo.TestTable;
-- FORMAT 関数を使用する
SELECT FORMAT(DateTimeCol, 'yyyy-MM-dd') AS FormattedDate
FROM dbo.TestTable;
このサンプルコードを実行すると、次の結果が出力されます。
FormattedDate
------------
2023-12-31
2024-01-01
Year Month Day
----- ----- -----
2023 12 31
2024 1 1
FormattedDate
------------
2023-12-31
2024-01-01
上記のサンプルコードは、TSQL datetime フィールドから YYYY-MM-DD 形式の日付を取得する方法を理解するのに役立ちます。
TSQL datetime フィールドから YYYY-MM-DD 形式の日付を取得するその他の方法
SELECT STUFF(
STUFF(
STUFF(
datetime_field, 5, 0, '-'
), 8, 0, '-'
), 12, 0, '-'
) AS formatted_date
FROM table_name;
SELECT CAST(datetime_field AS DATETIME2(7)) AS formatted_date
FROM table_name;
この例では、datetime_field
フィールドの値を DATETIME2(7) 型に変換し、formatted_date
という名前の新しい列に格納します。 DATETIME2(7) 型は、7 桁の精度を持つ日付時刻値を格納します。
SUBSTRING 関数と REPLACE 関数を使用する
SUBSTRING 関数は、文字列の一部を抽出するために使用されます。 REPLACE 関数は、文字列内の文字列を別の文字列で置き換えるために使用されます。 YYYY-MM-DD 形式の日付を取得するには、次のように SUBSTRING 関数と REPLACE 関数を使用できます。
SELECT
SUBSTRING(datetime_field, 1, 4) + '-' +
SUBSTRING(datetime_field, 6, 2) + '-' +
SUBSTRING(datetime_field, 9, 2) AS formatted_date
FROM table_name;
この例では、datetime_field
フィールドの値から YYYY-MM-DD 形式の日付を抽出します。
- CONVERT 関数、DATEPART 関数、FORMAT 関数は、最もシンプルで汎用性の高い方法です。
- STUFF 関数は、より複雑な書式の日付を取得する場合に役立ちます。
- DATETIME2 型は、より精度の高い日付時刻値を格納する場合に役立ちます。
- SUBSTRING 関数と REPLACE 関数は、より柔軟性がありますが、複雑なコードになる可能性があります。
sql-server t-sql