日付と時刻を結合する方法 - MS SQL Server
SQL Server で日付と時刻を結合するには、いくつかの方法があります。
方法 1: +
演算子を使用する
最も簡単な方法は、+
演算子を使用する方法です。
SELECT
date_field + time_field AS combined_datetime
FROM
your_table;
例:
SELECT
'2024-04-10' + '14:56:00' AS combined_datetime;
結果:
2024-04-10 14:56:00
方法 2: CAST()
関数を使用する
CAST()
関数を使用して、日付と時刻を同じデータ型に変換してから結合することもできます。
SELECT
CAST(date_field AS datetime) + CAST(time_field AS datetime) AS combined_datetime
FROM
your_table;
SELECT
CAST('2024-04-10' AS datetime) + CAST('14:56:00' AS datetime) AS combined_datetime;
2024-04-10 14:56:00
DATEADD()
関数を使用して、日付に時間を追加することもできます。
SELECT
DATEADD(date_field, time_field, DAY) AS combined_datetime
FROM
your_table;
SELECT
DATEADD('2024-04-10', '14:56:00', DAY) AS combined_datetime;
2024-04-10 14:56:00
SELECT
CONVERT(date_field, CHAR(10)) + ' ' + CONVERT(time_field, CHAR(8)) AS combined_datetime
FROM
your_table;
SELECT
CONVERT('2024-04-10', CHAR(10)) + ' ' + CONVERT('14:56:00', CHAR(8)) AS combined_datetime;
2024-04-10 14:56:00
- 最も簡単な方法は
+
演算子を使用する方法ですが、日付と時刻のデータ型が異なる場合はエラーが発生する可能性があります。 CAST()
関数を使用する方法は、日付と時刻のデータ型が異なる場合でも安全に使用できます。
-- サンプルテーブル
CREATE TABLE your_table (
date_field DATE,
time_field TIME
);
-- 1. `+` 演算子を使用する
SELECT
date_field + time_field AS combined_datetime
FROM
your_table;
-- 2. `CAST()` 関数を使用する
SELECT
CAST(date_field AS datetime) + CAST(time_field AS datetime) AS combined_datetime
FROM
your_table;
-- 3. `DATEADD()` 関数を使用する
SELECT
DATEADD(date_field, time_field, DAY) AS combined_datetime
FROM
your_table;
-- 4. `CONVERT()` 関数を使用する
SELECT
CONVERT(date_field, CHAR(10)) + ' ' + CONVERT(time_field, CHAR(8)) AS combined_datetime
FROM
your_table;
実行結果
2024-04-10 14:56:00
2024-04-10 14:56:00
2024-04-10 14:56:00
2024-04-10 14:56:00
注意事項
- 上記のコードは、SQL Server 2017 で実行されています。
- 日付と時刻のデータ型は、環境によって異なる場合があります。
日付と時刻を結合するその他の方法
T-SQL の DATETIME
型は、日付と時刻を単一のデータ型として格納することができます。
SELECT
CAST(date_field AS datetime) + CAST(time_field AS datetime) AS combined_datetime;
DECLARE @date_field DATE = '2024-04-10';
DECLARE @time_field TIME = '14:56:00';
SELECT
CAST(@date_field AS datetime) + CAST(@time_field AS datetime) AS combined_datetime;
2024-04-10 14:56:00
SELECT
STRFTIME('%Y-%m-%d %H:%M:%S', date_field, time_field) AS combined_datetime
FROM
your_table;
SELECT
STRFTIME('%Y-%m-%d %H:%M:%S', '2024-04-10', '14:56:00') AS combined_datetime;
2024-04-10 14:56:00
CLR を使用
CLR (Common Language Runtime) を使用して、日付と時刻を結合することもできます。
sql sql-server datetime