SQL Server 2005我想创建任务从datetime开始的小时
在SQL Server 2005上,我想创建一个表示我的任务开始的小时。我的日期时间是'2010-10-01 12:30:00:00',这是实际的开始时间。我想结束的是'12:00'这是任务开始的小时。关于如何放松'30分钟'的好主意?SQL Server 2005我想创建任务从datetime开始的小时
declare @dt datetime
set @dt = '2010-10-01 12:30:00.000'
select convert(char(5), dateadd(hour, datediff(hour, 0, @dt), 0), 108)
结果:
12:00
为datetime
declare @dt datetime
set @dt = '2010-10-01 12:30:00.000'
select dateadd(hour, datediff(hour, 0, @dt), 0)
结果:
2010-10-01 12:00:00.000
这正是我所需要的(如datetime)。无论如何,我只能得到时间,并保持它作为日期时间? –
@Peter - 日期时间将始终有日期部分。如果您需要比较不同日期的时间,则可以在比较之前修改这些值以使其具有相同的日期部分。 –
在比较之前,我将输入更改为字符串值,并且完美地工作,感谢您的帮助 –
如果你只是想消除datetime值分/秒/磨粉机,而是把它作为一个日期,使用DATEADD
/DATEDIFF
:
select DATEADD(hour,DATEDIFF(hour,0,`2010-10-01T12:30:00`),0)
将返回2010-10-01T12:00:00
。
我只能得到时间吗? –
SQL Server * * 2008之前唯一与datetime相关的datetype是'datetime'。即使你没有指定它们,例如用于初始化它的字符串文字,它总是有日期和时间组件。如果您只想比较两个日期时间的小时部分,忽略两个日期并忽略分钟,则可使用DATEPART(小时,
嗨达米安,我跟着你和米卡尔的建议,只是改变了输入日期,以便我只能比较时间(小时)。非常感谢你对此的帮助。一切都很好 –
这会做你想要什么:
SELECT DATEADD(hh, DATEDIFF(hh, '20000101', [DateField]), '20000101')
你想要'12:00'(作为字符串)还是'2010-10-01T12:00:00'(仍然是日期时间值)? –
我需要将它保留为日期时间值,以便我可以在'between'子句中使用它 –