首页 > 解决方案 > 在 SQL Server 中格式化 Datetime2

问题描述

我正在尝试将 a 格式化datetime2yyyy-mm-dd hh:mm:ss格式。

我尝试了以下选项:

这是抛出一个错误:

SELECT CONVERT(datetime2, 120); 

这工作正常,但我需要类型的输出datetime2

SELECT CONVERT(VARCHAR(19), GETDATE(), 120);

我怎样才能做到这一点?

标签: sqlsql-servertsqlformat

解决方案


您在CONVERT()未指定要转换为的数据类型的情况下调用该函数,因此在您的情况下,SELECT CONVERT(datetime2, 120);SQL Server 将尝试将值转换120为 a datetime2,这就是您收到此错误的原因(您没有提供)

不允许从数据类型 int 到 datetime2 的显式转换。

CONVERT()与日期和时间样式一起使用,您需要通过

CONVERT(<datatype to convert to>, <Value to be converted>, <Style>).

SYSUTCDATETIME返回 adatetime2您可以转换为

SELECT CONVERT(VARCHAR(20), SYSUTCDATETIME(), 120)
--Change SYSUTCDATETIME() with your column/variable

对于你所说的

但我需要类型的输出datetime2

ADATETIME没有格式,它是二进制值,因此您需要将其转换为格式化字符串。由于您需要返回 aDATETIME2那么您需要保持原样,并在表示层中进行格式化。


推荐阅读