使用 T-SQL 获取日期时间的时间

问题描述 投票:0回答:7

如何获取给定

datetime
值的时间?

我在数据库中有一个

datetime
,如下所示:

2010-09-06 17:07:28.170

并且只想要时间部分:

17:07:28.170

有这样的功能吗?

sql-server tsql datetime sql-server-2000
7个回答
113
投票

补充一下,从 SQL Server 2008 开始,有一个 TIME 数据类型,因此从那时起您可以执行以下操作:

SELECT CONVERT(TIME, GETDATE())

对于那些使用 SQL 2008+ 并发现这个问题的人可能有用。


21
投票

对于 SQL Server,这应该可行

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

14
投票

试试这个:

SELECT CAST(DataField AS time(7)) AS 'time'

请参阅 时间 (Transact-SQL)


10
投票

假设您的问题标题正确并且您想要时间:

SELECT CONVERT(char,GETDATE(),14) 

5
投票
CAST(CONVERT(CHAR(8),GETUTCDATE(),114) AS DATETIME)

在 SQL Server 2008 及更高版本中

CAST(GETUTCDATE() AS TIME)

0
投票

您可以尝试以下代码来获取 HH:MM 格式的时间:

 SELECT CONVERT(VARCHAR(5),getdate(),108)

0
投票

我知道我迟到了。 但是,

A1

Convert(nvarchar, Convert(smalldatetime, getDate())) as [small date time],

2023 年 8 月 21 日上午 9:36

A2

Convert(time(2), Convert(smalldatetime, getDate())) as [small time],

09:36:00.00

ps, Convert(time(x), GetDate()) 其中 x >= 0 且 x =< 7

编辑, 是的,所以,按照下面的评论,我可以理解我的答案可能与上面的一些答案相似。

第一个代码A1将给定日期转换为已经提供的nvarchar,上面具有不同的类型(smalldatetime),它应该返回比datetime和datetime2更短的值

第二个代码A2将给定日期转换为时间(2)作为毫秒,而不是默认值(6),其显示范围可以在0到7毫秒之间

© www.soinside.com 2019 - 2024. All rights reserved.