将 self-defined/custom 日期时间格式转换为日期时间 SQL 服务器

Convert self-defined/custom datetime format to datetime SQL Server

在 PostgreSQL 中,我可以将日期时间转换为时间戳,如下所示

to_timestamp('2019-12-20-15-12-42','YYYY-MM-DD-hh24-mi-ss')::timestamptz

如何在 SQL 服务器中执行此操作?我正在使用 SQL Server 2016。

select FORMAT(CAST('2019-12-20-15-12-42' AS datetime), N'YYYY-MM-DD HH:MI:SS')

此查询引发错误:

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

SQL 服务器没有将自定义日期时间字符串转换为 DATETIME 格式的内置函数。

SELECT SUBSTRING(literal, 1, 10) + ' ' + REPLACE(SUBSTRING(literal, 12, 8), '-', ':')

fiddle

您可以使用此表达式并创建您自己的函数。