SQL Serverでdatetimeを短い日付形式に変換する
SQL Serverでdatetime型のデータをより短い日付形式に変換する方法について説明します。
CONVERT関数を使用する
最も一般的な方法は、CONVERT
関数を使用することです。この関数は、データを指定されたデータ型に変換します。
CONVERT(varchar(10), datetime_column, 103)
varchar(10)
: 変換後のデータ型を指定します。ここでは、10文字の文字列に設定しています。datetime_column
: 変換したいdatetime型の列名です。103
: 103は、日付形式のスタイルコードです。この場合、"dd/mm/yyyy"の形式に変換します。
DATEPART関数と文字列連結を使用する
DATEPART
関数を使用して、年、月、日を個別に取得し、文字列連結を使って必要な形式に組み立てることもできます。
DATEPART(year, datetime_column) + '/' + DATEPART(month, datetime_column) + '/' + DATEPART(day, datetime_column)
FORMAT関数を使用する (SQL Server 2012以降)
SQL Server 2012以降では、FORMAT
関数を使用して、より柔軟な日付形式を指定できます。
FORMAT(datetime_column, 'yyyy/MM/dd')
例
DECLARE @datetime DATETIME = '2023-12-31 12:00:00';
-- CONVERT関数を使用
SELECT CONVERT(varchar(10), @datetime, 103) AS ShortDate;
-- DATEPART関数と文字列連結を使用
SELECT DATEPART(year, @datetime) + '/' + DATEPART(month, @datetime) + '/' + DATEPART(day, @datetime) AS ShortDate;
-- FORMAT関数を使用
SELECT FORMAT(@datetime, 'yyyy/MM/dd') AS ShortDate;
SQL Server 日付フォーマット変換の例
DECLARE @datetime DATETIME = '2023-12-31 12:00:00';
SELECT CONVERT(varchar(10), @datetime, 103) AS ShortDate;
DECLARE @datetime DATETIME = '2023-12-31 12:00:00';
: 変数@datetime
に日付と時刻を設定します。CONVERT(varchar(10), @datetime, 103)
:@datetime
を文字列に変換し、103というスタイルコードを使用して"dd/mm/yyyy"の形式にします。AS ShortDate
: 結果の列に名前を付けます。
DECLARE @datetime DATETIME = '2023-12-31 12:00:00';
SELECT DATEPART(year, @datetime) + '/' + DATEPART(month, @datetime) + '/' + DATEPART(day, @datetime) AS ShortDate;
DATEPART(year, @datetime)
:@datetime
の年を取得します。+ '/' +
: 年、月、日をスラッシュで連結します。
DECLARE @datetime DATETIME = '2023-12-31 12:00:00';
SELECT FORMAT(@datetime, 'yyyy/MM/dd') AS ShortDate;
FORMAT(@datetime, 'yyyy/MM/dd')
:@datetime
を指定されたフォーマット"yyyy/MM/dd"でフォーマットします。
CAST(datetime_column AS varchar(10))
DATE_FORMAT関数を使用する (MySQL)
もしMySQLを使用している場合は、DATE_FORMAT
関数を使用して日付をフォーマットすることができます。
DATE_FORMAT(datetime_column, '%Y/%m/%d')
TO_CHAR関数を使用する (Oracle)
TO_CHAR(datetime_column, 'YYYY/MM/DD')
カスタム関数を作成する
より複雑な日付フォーマットが必要な場合は、カスタム関数を作成することもできます。
CREATE FUNCTION dbo.FormatDate(@datetime DATETIME)
RETURNS VARCHAR(10)
AS
BEGIN
RETURN DATEPART(year, @datetime) + '/' + DATEPART(month, @datetime) + '/' + DATEPART(day, @datetime);
END
sql-server t-sql datetime