1

我在 SQL Server 2008 R2 中遇到问题。我想HH:mmDATETIME2列中获取。当我写下这个声明时:

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

我得到了完美的结果11:19,但是当我尝试从以下方面获得时间时:

SELECT (CONVERT(VARCHAR(5), '1900-01-01 01:10:00.0000000', 8))

我得到了结果1900,但我需要01:10

我怎样才能从这个语句中得到结果?我知道有多个这样的问题/答案,但我没有找到任何与我的问题相匹配的答案。

4

4 回答 4

2

在 SQL Server 端(例如在存储过程中),您可以使用这种转换:

declare @dt datetime2(0) = sysdatetime();

select @dt as [Date], left(convert(time(0), @dt, 108), 5) as [HH:mm];

如果您需要在客户端显示您的数据,例如报表或您的应用程序,最好使用客户端的格式化功能。这样,您可以考虑诸如首选日历系统、12 小时制或 24 小时制等因素。

于 2016-11-12T08:11:09.767 回答
2

尝试这个:

SELECT RIGHT('0' + CONVERT(VARCHAR(2), 
DATEPART(HOUR, '1900-01-01 01:10:00.0000000')), 2) hh, 
DATEPART(minute, '1900-01-01 01:10:00.0000000') mm

或者

SELECT LEFT(CONVERT(TIME(0), '1900-01-01 01:10:00.0000000'), 2) hh , DATEPART(minute, '1900-01-01 01:10:00.0000000') mm

于 2016-11-12T06:01:11.377 回答
0

对于 24H 日期时间长度的许多格式为 19,因此您可以使用以下

 SELECT RIGHT('0' + CAST(DATEPART(HOUR, Substring('1900-01-01 01:10:00.0000000',1,19)) AS VARCHAR(2)), 2) + ':' + CAST(DATEPART(minute, substring('1900-01-01 01:10:00.0000000',1,19)) AS VARCHAR(2)) HHmm

希望能帮助到你

于 2016-11-12T07:17:41.127 回答
0

试试这个,我想这就是你想要的。

这将给出答案:1:10

SELECT CONVERT(VARCHAR(5),CONVERT(DATETIME,'1900-01-01 01:10:00.000'),8)

你也可以试试这个

select convert(VARCHAR,DATEPART(HOUR,'1900-01-01 01:10:00.0000000'))+':'+CONVERT(VARCHAR,DATEPART(MINUTE,'1900-01-01 01:10:00.0000000'))
于 2016-11-12T08:07:32.650 回答