我在MSSQL 2008 R2中有两列:Workingdate
和Startime
。
由于应用程序设计中的错误,启动时未定义为日期+时间,而是仅定义为时间(例如,1899-12-30 16:00:00.000
为下午4:00)
现在,我遇到了一个无法添加日期和时间的问题。
为什么
select convert(datetime,'2015-07-01 00:00:00.000') + convert(datetime,'1899-12-30 16:00:00.000')
2015-06-29 16:00:00.000 and not 2015-07-01 16:00:00.000
谢谢你的帮助
抱歉:我找到了解决方案:日期来自VBA,第一天是1899-12-30而不是1900-01-01,就像SQL一样!因此我必须添加+2 !!
答案 0 :(得分:0)
试试这个:
QThread::sleep(100);
我们的想法是使用DATEADD函数将基本日期(select dateadd(second,
datepart(hour,'1899-12-30 16:00:00.000') * 3600 +
datepart(minute,'1899-12-30 16:00:00.000') * 60 +
datepart(second,'1899-12-30 16:00:00.000'),
'2015-07-01 00:00:00.000')
)所需的时间(以秒为单位)添加。为了将记录时间转换为秒,我们使用DATEPART函数三次从记录日期中提取小时,分钟和秒。
要在表格中修复日期,您可以使用以下内容:
2015-07-01 00:00:00.000
答案 1 :(得分:0)
你不能轻易地使用dateadd,简单的方法是从一列添加时间与另一列的日期时间,如下所示:
SELECT
cast('1899-12-30 16:00:00.000' as time)+
cast('2015-07-01 00:00:00.000' as datetime)
结果:
2015-07-01 16:00
答案 2 :(得分:-1)
通常情况下,我会一直使用DATEADD进行此类操作。
希望有所帮助