首页 > 数据库 > mysql教程 > 如何在 MS SQL Server 中将单独的日期和时间列合并为单个日期时间列?

如何在 MS SQL Server 中将单独的日期和时间列合并为单个日期时间列?

Linda Hamilton
发布: 2025-01-17 17:22:10
原创
562 人浏览过

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

在 MS SQL Server 中合并日期和时间列:综合指南

许多数据库设计将日期和时间信息存储在两个单独的列中。 本指南解释了如何在 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 版本和数据类型

对于 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 中将单独的日期和时间列合并为单个日期时间列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板