DECLARE @DateNow smalldatetime
SET @DateNow='12:30'
select @DateNow
-------------------------------------OR--------------------------------------
select CAST( '12:30' as datetime )
结果:1900-01-01 12:30:00.000(我不想要这个)
但我需要时间格式的结果而不是字符串而不是日期时间?
结果:12:30(我想要这个)
答案 0 :(得分:9)
与José说的一样,您可以使用CONVERT将日期时间显示为日期。 MSDN列出了所有possible formats。例如,格式8是hh:mi:ss:
select convert(varchar(32),getdate(),8)
12:51:21
现在,您可以通过指定较少的字符来减少秒数:
select convert(varchar(5),getdate(),8)
12:51
另一种经常使用的格式是121,yyyy-mm-dd hh:mi:ss.mmm(24h):
select convert(varchar(32),getdate(),121)
2009-05-08 12:51:21.987
你可以选择时间部分:
select substring(convert(varchar(32),getdate(),121),12,5)
12:51
或者组合字符串技巧:
select right(convert(varchar(16),getdate(),121),5)
12:51
右?没错!
答案 1 :(得分:7)
SQL Server 2008中有TIME类型,但在以前的版本中,您可以将其表示为varchar以供显示。
这是您可以使用所需格式检索DATETIME字段的时间部分的方法。
DECLARE @DateNow smalldatetime
SET @DateNow = GETDATE() -- 2009-05-08 12:58:02.680
SELECT CONVERT(CHAR(5), @DateNow, 8)
-- this returns the time portion as 12:58
答案 2 :(得分:1)
您可以使用CONVERT功能。
顺便说一下,SQL Server中没有“TIME”数据类型。因此,转换后的结果将始终为STRING。
编辑:SQL Server版本<
SQL Server 2008中没有“TIME”数据类型。
答案 3 :(得分:0)
如果您需要比较,添加和/或减去时间(仅)值,请考虑使用INT存储“TIME”值然后将其转换为CHAR的可能性显示结果。