从 SQL Server 2008 中的日期时间字段中删除毫秒

Remove milliseconds from date time field in SQL Server 2008

我有一个字段 'login' 当前显示日期时间为“2019-04-26 10:20:23.050”

我希望只显示“2019-04-26 10:20”

我以前解决过这个问题,但找不到摘录。我现在能找到的最接近的是

convert(datetime, CONVERT(nchar(16),login,120),120)

但这只提供“2019-04-26 10:20:00.000”,而我希望去掉最后 5 个零。 有什么想法吗?

要获得非常具体的格式,有时您必须转换并使用字符串。通常,您会希望 return 本机格式并让客户端应用显示格式。使用简单的字符串操作:

 DECLARE @Login DATETIME ='01/01/2019 10:20:00.500'

 SELECT CAST(CAST(@Login AS DATE) AS NVARCHAR(50))+' '+
        CAST(DATEPART(HOUR,@Login) AS NVARCHAR(50))+':'+
        CAST(DATEPART(MINUTE,@Login) AS NVARCHAR(50))

要删除毫秒,您可以使用 smalldatetime:cast(login as smalldatetime)

要同时删除秒数,请使用 datetime2(0):cast(login as datetime2(0))