SQL ServerでDateTime型の日付部分のみを取得する方法
SQL ServerでDateTime
型の日付部分のみを取得するには、いくつかの方法があります。
方法
-
DATEPART
関数は、DateTime
型の値から日付、時刻、年、月、日などの部分を取得することができます。SELECT DATEPART(yy, '2023-12-31') AS 年, DATEPART(mm, '2023-12-31') AS 月, DATEPART(dd, '2023-12-31') AS 日;
この例では、
2023-12-31
というDateTime
型の日付部分のみを取得しています。 -
CONVERT
関数は、DateTime
型を他のデータ型に変換することができます。SELECT CONVERT(VARCHAR(10), '2023-12-31', 101) AS 日付;
-
SUBSTRING
関数は、文字列の一部を切り出すことができます。SELECT SUBSTRING('2023-12-31', 1, 10) AS 日付;
それぞれの方法のメリットとデメリット
方法 | メリット | デメリット |
---|---|---|
DATEPART関数 | 使いやすい | 年、月、日などの個別の部分を取得できる |
CONVERT関数 | 変換後のデータ型を指定できる | フォーマットを指定する必要がある |
SUBSTRING関数 | 汎用性が高い | フォーマットを意識する必要がない |
SELECT DATEPART(yy, '2023-12-31') AS 年,
DATEPART(mm, '2023-12-31') AS 月,
DATEPART(dd, '2023-12-31') AS 日;
CONVERT関数を使用する
SELECT CONVERT(VARCHAR(10), '2023-12-31', 101) AS 日付;
SUBSTRING関数を使用する
SELECT SUBSTRING('2023-12-31', 1, 10) AS 日付;
出力結果
年 | 月 | 日
-- | -- | --
2023 | 12 | 31
日付
--
2023-12-31
日付
--
2023-12-31
SELECT CAST('2023-12-31' AS DATE) AS 日付;
FLOOR関数を使用する
FLOOR
関数は、数値を切り捨てます。
SELECT FLOOR('2023-12-31') AS 日付;
DATEDIFF
関数は、2つの日付の間の日数差を計算します。
SELECT DATEADD(dd, DATEDIFF(dd, '2023-01-01', '2023-12-31'), '2023-01-01') AS 日付;
sql-server datetime