MSSQL日期时间格式化指南(mssql 格式化时间)

MSSQL日期时间格式化指南

有时候我们在使用MSSQL数据库时,会遇到日期时间格式化的需求,要求把数据库中查询出的datetime类型的字段按照yyyy-MM-dd 格式,hh:mm:ss 格式输出给用户,这时就需要对日期时间格式进行格式化,本文将介绍MSSQL的日期时间格式化的方法。

MSSQL中提供了内置函数CONVERT()来帮助我们实现日期时间格式化, CONVERT()函数接收要转换的日期时间值,转换格式(如yyyy-MM-dd)和数据库时间格式参数,通常用来将字符串类型的时间数据转换为datetime类型的。下面例子以将datetime类型的字段按照yyyy-MM-dd 格式,hh:mm:ss 格式输出给用户为例:

SELECT CONVERT(VARCHAR(20), GetDate(), 120) AS [yyyy-MM-dd hh:mm:ss]

上述函数中的参数120表示格式用yyyy-MM-dd hh:mm:ss来转换日期时间值,有关其他格式,我们可以参考MSSQL文档列出的内部时间表示格式,例如,将datetime类型转换为yyyy/mm/dd格式,可以这么写:

SELECT CONVERT(VARCHAR(20), GetDate(), 111) AS [yyyy/MM/dd]

上面的参数111表示格式是yyyy/mm/dd,其它参数可以参考MSSQL文档。如果一些特殊字符并不能满足转换的要求,我们还可以使用REPLACE()函数将字符替换为想要的格式, 例如:在上面的结果中把 “/” 用 “-” 替换:

SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 111), '/', '-')

值得注意的是,在使用 CONVERT 函数格式化日期时间时, 通常不要在要转换的日期时间值中指定指定长度,如果指定过短指定时间会把秒转换最后一位截断,以及造成不必要的错误

总而言之,使用 CONVERT 和 REPLACE 函数只能支持常用的日期时间格式转换, 如果我们有更多复杂的格式转换需求,可以考虑使用MSSQL提供的日期时间函数XML,例如:

SELECT 
CONVERT (
VARCHAR(20),
XMLCONCAT(
XMLELEMENT(
"data",
FORMAT ( GETDATE(), 'yyyy MM dd h:m:s' )
)
),
120
)
FROM SomeTable

通过学习本文,你可以很容易的使用MSSQL内置函数和其它


数据运维技术 » MSSQL日期时间格式化指南(mssql 格式化时间)