许多数据库设计将日期和时间信息存储在两个单独的列中。 本指南解释了如何在 MS SQL Server 中有效地将这些组合到单个 datetime
列中。
假设您的“日期”列仅包含日期值(时间部分为零)并且“时间”列仅包含时间值(日期部分为 1900 年 1 月 1 日),一个简单的加法运算令人惊讶地有效:
<code class="language-sql">SELECT CombinedDateTime = MyDate + MyTime FROM MyTable;</code>
这个看似简单的添加利用了旧版 SQL Server 版本中 datetime
值的内部表示。 每个 datetime
值都存储为两个 4 字节整数:一个用于日期,一个用于时间。添加它们会执行按位组合,从而产生单个 datetime
值。
对于 SQL Server 2008 及更高版本,除了 DATE
和 TIME
之外,还引入了 DATETIME
和 DATETIME2
数据类型。 直接添加不再适用。要在这些较新版本中组合 DATE
和 TIME
,显式转换为 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 中将单独的日期和时间列合并为单个日期时间列?的详细内容。更多信息请关注PHP中文网其他相关文章!