添加时间和日期

时间:2015-08-03 07:30:13

标签: sql sql-server date sql-server-2008-r2

我在MSSQL 2008 R2中有两列:WorkingdateStartime。 由于应用程序设计中的错误,启动时未定义为日期+时间,而是仅定义为时间(例如,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 !!

3 个答案:

答案 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进行此类操作。

希望有所帮助