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

Posted

技术标签:

【中文标题】使用 T-SQL 获取日期时间的时间?【英文标题】:Get the time of a datetime using T-SQL? 【发布时间】:2011-04-09 01:28:37 【问题描述】:

如何获取给定datetime 值的时间?

我在数据库中有一个datetime,如下所示:

2010-09-06 17:07:28.170

只想要时间部分:

17:07:28.170

有什么功能吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

试试这个

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

http://msdn.microsoft.com/en-us/library/bb677243.aspx

【讨论】:

在 msdn 文档中没有 sql 版本。我在 sql server 2008 中使用它【参考方案3】:
CAST(CONVERT(CHAR(8),GETUTCDATE(),114) AS DATETIME)

在 SQL Server 2008+ 中

CAST(GETUTCDATE() AS TIME)

【讨论】:

【参考方案4】:

从 SQL Server 2008 中添加它,有一个 TIME 数据类型,所以从那时起你可以这样做:

SELECT CONVERT(TIME, GETDATE())

可能对那些使用 SQL 2008+ 并找到这个问题的人有用。

【讨论】:

这是一个很好的答案。 @grady 你应该接受这个或询问更多信息。 或更准确地说:convert(TIME[(小数秒精度)], GETDATE()) (使用0的精度截断亚秒) @MarkS 这不是公认的答案,因为它不适用于 SQL 2000(OP 明确指定)。 SQL 2000 中没有 TIME 类型。事实上它根本不应该有任何投票,因为它不回答问题。 @DaveBoltman - 同意你的观点:不是公认的答案。但是,我确实发现投票推理 + 否决票很苛刻。尽管根据确切的问题不适用于 SQL 2000,但它对于更高版本仍然相关(并且正确)。正如投票所表明的那样,随着问题变得越来越老,它变得越来越相关。如果这有很多反对意见,那将错误地表明它是错误的。现在搜索的人很可能(希望!)超过 2000 @AdaTheDev 好的,我试图推翻我的反对意见,但它说现在已经过了几个小时了。【参考方案5】:

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

SELECT CONVERT(char,GETDATE(),14) 

已编辑以包含毫秒。

【讨论】:

【参考方案6】:

如果是 SQL Server,这应该可以工作

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

【讨论】:

完美适用于 SQL Server 2005 这对于在保持时间的同时编辑日期很有用

以上是关于使用 T-SQL 获取日期时间的时间?的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL 查询以获取从今天起 +30 天的日期

T-Sql 每年获取员工开始和结束日期

从 T-SQL 中的周数获取日期

从T-SQL中的周数中获取日期

获取周和年的第一个和最后一个日期

在 T-SQL 中检查两个日期之间的日期