在SQL Server 2005中,我正在查询一些旧的遗留数据,我需要将datetime列的日期组件与另一列的时间组件组合在一起。这是一个例子:
DateColumn: 2016-05-09 00:00:00.000
TimeColumn: 1899-12-30 12:26:00.000
我需要将最终结果转换为以下DateTime:
ResultDateTime: 2016-05-09 12:26:00.000
我尝试使用:
CAST(DateColumn AS DATETIME) + CAST(TimeColumn AS TIME) AS ResultDateTime
但SQL Server 2005并不识别TIME类型。
有人可以告诉我一种方法吗?
非常感谢!
答案 0 :(得分:2)
将时间列转换为字符串HH:MM:SS并添加到日期列
ResultDatetIme = DateColumn + convert(varchar(10), TimeColumn, 108)
答案 1 :(得分:2)
您可以使用 xAxis: {
axisLabel: 'Date',
tickFormat: function (d) {
return d3.time.format('%a %b %e %H:%M:%S %Y')(new Date(d))
}
和DATEADD
,假设时间栏的日期部分始终是30/12/1899:
DATEDIFF
结果:
declare @t table (DateColumn datetime,TimeColumn datetime)
insert into @t(DateColumn,TimeColumn) values
('2016-05-09T00:00:00.000','1899-12-30T12:26:00.000')
select DATEADD(millisecond,DATEDIFF(millisecond,'18991230',TimeColumn),DateColumn)
from @t
答案 2 :(得分:1)
如您所见,SQL 2005中支持以下数据类型: https://msdn.microsoft.com/en-us/library/ms187819(v=sql.90).aspx
使用datetime和smalldatetime,smalldatetime数据类型存储日期和时间,精度低于datetime。数据库引擎将smalldatetime值存储为两个2字节整数。前2个字节存储1900年1月1日之后的天数。其他2个字节存储自午夜以来的分钟数。 datetime值四舍五入为.000,.003或.007秒的增量,如下表所示。
SELECT CAST('2016-05-09 00:00:00.000' AS DATETIME) + CAST('1900-01-01 12:26:00.000' AS smalldatetime) AS ResultDateTime
Result: 2016-05-09 12:26:00.000
所以你可以使用datetime和smalldatetime,希望完全适合你。 如果有任何问题,请告诉我。喜欢解决:)