小编典典

如何将一个字段中的日期与另一个字段中的时间结合起来 - MS SQL Server

all

在我正在处理的摘录中,我有 2datetime列。如图所示,一列存储日期,另一列存储时间。

如何查询表以将这两个字段组合成 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

阅读 77

收藏
2022-06-11

共1个答案

小编典典

您可以简单地将两者相加。

  • 如果Time part您的列Date的始终为零
  • 并且Date part您的列Time的 也始终为零 (基准日期:1900 年 1 月 1 日)

添加它们会返回正确的结果。

SELECT Combined = MyDate + MyTime FROM MyTable

基本原理(感谢 ErikE/dnolan)

由于日期存储为两个 4 字节 Integers的方式,左 4 字节为date,右 4 字节为time. 就像在做$0001 0000 + $0000 0001 = $0001 0001

编辑关于新的 SQL Server 2008 类型

Date并且Time是 中引入的类型SQL Server 2008。如果你坚持添加,你可以使用Combined = CAST(MyDate AS DATETIME) + CAST(MyTime AS DATETIME)

Edit2 关于 SQL Server 2008 及更高版本中的精度损失(对 Martin Smith 表示敬意)

看看How to combine date and time to datetime2 in SQL Server?
以防止使用 SQL Server 2008 及更高版本丢失精度。

2022-06-11