1. ホーム
  2. sql

[解決済み] あるフィールドの日付と別のフィールドの時刻を結合する方法 - MS SQL Server

2022-04-07 06:25:29

質問

私が扱っているエキスでは、2つの datetime カラムがあります。1つのカラムには日付が、もう1つのカラムには時刻が、このように格納されます。

これらの2つのフィールドを1つのカラムにまとめるには、どのようにテーブルをクエリすればよいのでしょうか。 datetime ?

日付

2009-03-12 00:00:00.000
2009-03-26 00:00:00.000
2009-03-26 00:00:00.000

時代

1899-12-30 12:30:00.000
1899-12-30 10:00:00.000
1899-12-30 10:00:00.000

解決方法は?

単純に2つを足せばいいのです。

  • もし Time partDate カラムは常に0です
  • そして その Date partTime カラムも常に0です (基準日: 1900年1月1日)

それらを足すと正しい結果が返ってきます。

SELECT Combined = MyDate + MyTime FROM MyTable

理由 (ErikE/dnolanに感謝)

<ブロッククオート

日付が2つの4バイトで格納されているため、このように動作します。 Integers で、左の4バイトは date と右の 4バイトは time . それはまるで $0001 0000 + $0000 0001 = $0001 0001

SQL Server 2008 の新しいタイプに関する編集

DateTime で紹介した型です。 SQL Server 2008 . どうしても追加したい場合は Combined = CAST(MyDate AS DATETIME) + CAST(MyTime AS DATETIME)

SQL Server 2008 以降の精度の低下に関する編集2 (マーティン・スミス氏に感謝)

をご覧ください。 SQL Server で日付と時刻を datetime2 に結合する方法は? SQL Server 2008以降で精度が落ちないようにするため。