将日期格式 SQL 转换为 YYYY-MM-DD HH:MM:SS

J.D*_*.Do 0 sql sql-server

我目前有日期格式2016-11-23 16:47:21.007,我正在尝试使用以下 SQL 转换它:

update user_table set login_date = CONVERT(datetime,login_date,120)

所以我只能得到2016-11-23 16:47:21,但目前只是保持相同的格式。

我错过了什么吗?

Tim*_*sen 5

您当前的需求主要是演示需求。由于您login_date已经存储为datetime,因此无需在数据库内部进行任何更改。

当您需要呈现没有毫秒的内容时login_date,请继续按CONVERT原样调用:

SELECT CONVERT(varchar(19), login_date, 120) AS login_date_no_millis
FROM yourTable
Run Code Online (Sandbox Code Playgroud)

但无需执行UPDATE您在问题中向我们展示的操作。

  • 您应该为“varchar”指定一个长度 - [不仅因为一般情况下总是这样做是一个好主意](https://sqlblog.org/blogs/aaron_bertrand/archive/2009/10/09/bad- habits-to-kick-declaring-varchar-without-length.aspx),还因为在这种情况下您可以使用长度来省略毫秒,这正是OP所要求的。这里没有真正的影响,但您可能也可以使用“char”,因为输出将始终具有相同的长度。 (3认同)