如何在TSQL中截断秒数?

8

我有时间,选择cast(SYSDATETIME() AS time) 14:59:09.2834595

如何截取秒数? 14:59

5个回答

11

描述

您可以使用 T-SQL 函数 convert

示例

PRINT convert(varchar(5), SYSDATETIME(), 108)

将会给你 hh:mm

更多信息


4

如果你想截断秒并仍然拥有T-SQL日期数据类型,首先将日期转换为距离日期“0”以分钟为单位,然后将分钟加回到“0”。这个答案不需要任何额外的解析/转换。这种方法适用于截断其他部分,只需更改MINUTE即可。 例如: SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, 0, '2016-01-01 23:22:56.997'), 0)


2
我很惊讶其他答案都将日期转换为各种字符串,而不是这个简单明了的解决方案。 - Spivonious
一针见血的解决方案 - pcl

1
select cast(left(cast(SYSDATETIME() AS time), 5) as time)

0
SELECT FORMAT(time_column, 'yyyy-MM-ddThh:mm:00.000Z') from table

1
请注意... FORMAT() 函数比使用 CONVERT() 想出的任何其他方法都慢至少17倍。 - Jeff Moden
你的回答可以通过添加更多关于代码的信息以及它如何帮助OP来改进。 - Tyler2P
OP想要的是14:59,只有小时和分钟。可以通过以下方式实现:<SELECT FORMAT(time_column, 'HH:mm') FROM TABLE>。我不知道如何避免使用FORMAT函数。 - Der U

0
如果您需要完全删除秒数,您可以使用DATEPART()函数(针对SQL Server)来剥离小时和分钟,然后将其重新附加在一起。(如果这有效的话,我更喜欢dknaack的解决方案。)
SELECT CAST(DATEPART(hour, SYSDATETIME()) + ':' + DATEPART(minute, SYSDATETIME()) AS DATETIME)

这是不可行的。 - Der U
这行不通 - Der U

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接