从字符串转换日期 and/or 时间时,SQLCMD 给出转换失败

SQLCMD gives conversion failed when converting date and/or time from character string

这个问题的重要部分是 Sqlcmd 的使用。简而言之,我试图弄清楚如何在我的脚本中使用 date/time,文档对此进行了阐述。

我尝试了几种日期格式、转换和转换等

有人有想法吗?

-- I don't know how else to format this but as a string
:SETVAR CURRENT_DATE "2016-09-15T17:30:00"

PRINT CONVERT(DATETIME2,'${CURRENT_DATE}',106)

报错: Conversion failed when converting date and/or time from character string.

编辑:

我认为这与 sqlcmd 有关,与格式无关。

这个有效:

PRINT CONVERT(DATETIME2,'2016-09-15T17:30:00', 106)

这有效:

PRINT CONVERT(DATETIME2,'2016-09-15T17:30:00', 126)

但是使用 Setvar 它没有工作

:SETVAR CURRENT_DATE "2016-09-15T17:30:00"
PRINT CONVERT(DATETIME2,'${CURRENT_DATE}',126)

我也不在乎datetme是什么格式,所以我可以根据需要更改它。

您在 convert 函数中使用了错误的 style 参数。
对于 ISO8601,您应该使用 126,而不是像现在这样使用 106。

这应该有效:

:SETVAR CURRENT_DATE "2016-09-15T17:30:00"

PRINT CONVERT(DATETIME2,'${CURRENT_DATE}',126)

嗯,我是个傻瓜。括号类型错误:

:SETVAR CURRENT_DATE "2016-09-15T17:30:00"
PRINT CONVERT(DATETIME2,'$(CURRENT_DATE)',126)