使用 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 获取日期时间的时间?的主要内容,如果未能解决你的问题,请参考以下文章