2010-09-07 123 views
52

如何获得给定datetime值的时间?使用T-SQL获取日期时间?

我在数据库中的datetime这样的:

2010-09-06 17:07:28.170 

,并希望只有时间部分:

17:07:28.170 

是否有那个什么功能?

回答

17

在SQL Server的情况下,这应该工作

SELECT CONVERT(VARCHAR(8),GETDATE(),108) AS HourMinuteSecond 
+0

完美的SQL Server 2005的 – element11 2016-02-04 19:37:09

10

假设你的问题的标题是正确的,你想要的时间:

SELECT CONVERT(char,GETDATE(),14) 

编辑,包括毫秒。

75

我想补充的是从SQL Server 2008,有一个时间数据类型,所以从那时起,你可以这样做:

SELECT CONVERT(TIME, GETDATE()) 

可能是那些使用SQL 2008+,找到这个问题非常有用。

+2

这是一个很好的答案。 @grady你应该接受这个或要求更多的信息。 – 2015-03-13 13:53:15

+1

或更精确地说:转换(TIME [(fractional second precision)],GETDATE())(使用精度0来截断亚秒) – tbone 2016-06-23 21:39:14

+0

@MarkS这不能被接受,因为它不适用于SQL 2000 OP显式指定)。在SQL 2000中没有TIME类型。实际上它不应该有任何投票,因为它不回答问题。 – DaveBoltman 2017-11-27 16:11:05

4
CAST(CONVERT(CHAR(8),GETUTCDATE(),114) AS DATETIME) 

在SQL Server 2008+

CAST(GETUTCDATE() AS TIME)