ホームページ >データベース >mysql チュートリアル >MS SQL Server で別々の日付列と時刻列を単一の DateTime 列に結合するにはどうすればよいですか?

MS SQL Server で別々の日付列と時刻列を単一の DateTime 列に結合するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-17 17:22:10563ブラウズ

How Can I Combine Separate Date and Time Columns into a Single DateTime Column in MS SQL Server?

MS SQL Server での日付と時刻の列のマージ: 総合ガイド

多くのデータベース設計では、日付と時刻の情報が 2 つの別々の列に保存されます。 このガイドでは、これらを MS SQL Server 内の単一の datetime 列に効率的に結合する方法について説明します。

解決策

「Date」列には日付値のみが含まれ (時刻部分はゼロ)、「Time」列には時刻値のみが含まれる (日付部分は 1900 年 1 月 1 日) と仮定すると、単純な加算演算は驚くほどうまくいきます。

<code class="language-sql">SELECT CombinedDateTime = MyDate + MyTime FROM MyTable;</code>

仕組みを理解する

この一見単純な追加は、古い SQL Server バージョンの datetime 値の内部表現を利用しています。 各 datetime 値は 2 つの 4 バイト整数として保存されます。1 つは日付用、もう 1 つは時刻用です。それらを追加するとビット単位の組み合わせが実行され、単一の datetime 値が生成されます。

新しい SQL Server バージョンとデータ型の処理

SQL Server 2008 以降では、DATETIME に加えて、DATETIMEDATETIME2 データ型が導入されました。 直接追加は適用されなくなりました。これらの新しいバージョンで DATETIME を組み合わせるには、DATETIME への明示的なキャストが重要です。

<code class="language-sql">SELECT CombinedDateTime = CAST(MyDate AS DATETIME) + CAST(MyTime AS DATETIME) FROM MyTable;</code>

さらに、datetime2 値を直接追加すると、精度が失われる可能性があります。 正確性を確保するには、結合する前に DATETIME に変換してください:

<code class="language-sql">SELECT CombinedDateTime = CAST(MyDate AS DATETIME) + CAST(MyTime AS DATETIME) FROM MyTable;</code>

このアプローチでは、SQL Server のバージョンに関係なく、日付と時刻のコンポーネントを単一の datetime 列に正確かつ信頼性高く組み合わせることを保証します。

以上がMS SQL Server で別々の日付列と時刻列を単一の DateTime 列に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。