2012-05-18 38 views
-2

从过程我的输出类似如何在SQL Server中的动态更改日期

Jan 1 1900 10:30PM 
Jan 1 1900 10:45PM 
Jan 1 1900 11:00PM 
Jan 1 1900 11:30PM 
Jan 1 1900 11:45PM 
Jan 2 1900 12:00AM 
Jan 2 1900 12:15AM 
Jan 2 1900 12:30AM 
Jan 2 1900 12:45AM 
Jan 2 1900 1:00AM 

我想以后12:00 AM

这样随着时间的推移而变化的日期加到当前日期:

Friday,MAY,18 10:30PM 
Friday,MAY,18 10:45PM 
Friday,MAY,18 11:00PM 
Friday,MAY,18 11:30PM 
Friday,MAY,18 11:45PM 
Friday,MAY,19 12:00AM 
Friday,MAY,19 12:15AM 
Friday,MAY,19 12:30AM 
Friday,MAY,19 12:45AM 
Friday,MAY,19 1:00AM 

如何做到这一点?

在此先感谢

回答

1

从SQL Server 2008:

select YourTimeCol+cast(getdate() as date) 
from YourTable 

前的SQL Server 2008:

select YourTimeCol+dateadd(day, datediff(day, 0, getdate()), 0) 
from YourTable 

SE-Data

0

我认为你需要这个

DECLARE @tt TABLE (Sday VARCHAR(50)) 
INSERT INTO @tt VALUES('Jan 1 1900 10:30PM'),('Jan 1 1900 10:45PM'),('Jan 1 1900 11:00PM'),('Jan 1 1900 11:30PM'),('Jan 1 1900 11:45PM'),('Jan 2 1900 12:00AM'),('Jan 2 1900 12:15AM'),('Jan 2 1900 12:30AM'),('Jan 2 1900 12:45AM'),('Jan 2 1900 1:00AM') 

SELECT Sday,DATEADD(DAY,(DATEDIFF(DAY,'1900-01-01',GETDATE())),Sday) AS resultAsDatetime, 
CONVERT(VARCHAR(50),DATEADD(DAY,(DATEDIFF(DAY,'1900-01-01',GETDATE())),Sday),109) AS result 
FROM @tt 

这是返回

Jan 1 1900 10:30PM 2012-05-18 22:30:00.000 May 18 2012 10:30:00:000PM 
Jan 1 1900 10:45PM 2012-05-18 22:45:00.000 May 18 2012 10:45:00:000PM 
Jan 1 1900 11:00PM 2012-05-18 23:00:00.000 May 18 2012 11:00:00:000PM 
Jan 1 1900 11:30PM 2012-05-18 23:30:00.000 May 18 2012 11:30:00:000PM 
Jan 1 1900 11:45PM 2012-05-18 23:45:00.000 May 18 2012 11:45:00:000PM 
Jan 2 1900 12:00AM 2012-05-19 00:00:00.000 May 19 2012 12:00:00:000AM 
Jan 2 1900 12:15AM 2012-05-19 00:15:00.000 May 19 2012 12:15:00:000AM 
Jan 2 1900 12:30AM 2012-05-19 00:30:00.000 May 19 2012 12:30:00:000AM 
Jan 2 1900 12:45AM 2012-05-19 00:45:00.000 May 19 2012 12:45:00:000AM 
Jan 2 1900 1:00AM 2012-05-19 01:00:00.000 May 19 2012 1:00:00:000AM 

obviouly您可以选择日期时间转换为VARCHAR为正确的格式记录在CONVERT功能中,但我认为这不需要帮助。 希望这有助于。

+0

感谢 'EDDO' 为我工作......再次感谢你。在这里再一步说明如何仅选择大于服务器时间(currunt时间)的值。我们可以在插入@tt时做到这一点(对于条件请求的同学)。 – user1402665

+0

你是指这个? 'SELECT Sday,DATEADD(DAY,(D​​ATEDIFF(DAY,'1900-01-01',GETDATE())),Sday)AS resultAsDatetime, CONVERT(VARCHAR(50),DATEADD(DAY,(D​​ATEDIFF(DAY,' (DAYDAY,'1900-01-01',GETDATE())),Sday(DATED,(DAY,'1900-01-01',GETDATE())),Sday )> GETDATE()' – eddo

+0

是的,非常感谢你让我的一天 – user1402665

相关问题