在我正在处理的一个摘录中,我有2datetime
个专栏.一列存储日期,另一列存储时间,如图所示.
如何查询该表以将这两个字段合并为类型为datetime
的一列?
Dates
2009-03-12 00:00:00.000
2009-03-26 00:00:00.000
2009-03-26 00:00:00.000
Times
1899-12-30 12:30:00.000
1899-12-30 10:00:00.000
1899-12-30 10:00:00.000
在我正在处理的一个摘录中,我有2datetime
个专栏.一列存储日期,另一列存储时间,如图所示.
如何查询该表以将这两个字段合并为类型为datetime
的一列?
Dates
2009-03-12 00:00:00.000
2009-03-26 00:00:00.000
2009-03-26 00:00:00.000
Times
1899-12-30 12:30:00.000
1899-12-30 10:00:00.000
1899-12-30 10:00:00.000
你可以简单地把两者相加.
Date
列中的Time part
始终为零 Time
列的Date part
也总是零(base date: January 1, 1900)添加它们将返回正确的结果.
SELECT Combined = MyDate + MyTime FROM MyTable
它是这样工作的,因为日期是以两个4字节的形式存储的
Date
和Time
是在SQL Server 2008
中引入的类型.如果你坚持添加,你可以使用Combined = CAST(MyDate AS DATETIME) + CAST(MyTime AS DATETIME)
请看一下How to combine date and time to datetime2 in SQL Server?,以防止使用SQL Server 2008及更高版本造成精度损失.