SQLCMD дает сбой преобразования при преобразовании даты и / или времени из строки символов - PullRequest
0 голосов
/ 25 апреля 2020

Важной частью этого вопроса является использование Sqlcmd. Просто я пытаюсь понять, как использовать дату / время в моих сценариях, и документация освещает это.

Я пробовал несколько форматов дат, конвертацию и приведение, и т.д. c.

У кого-нибудь есть идеи?

-- 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)

Мне также все равно, в каком формате находится дата, поэтому Я могу изменить его при необходимости.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Ну, я дурак. Неправильный вид скобок:

:SETVAR CURRENT_DATE "2016-09-15T17:30:00"
PRINT CONVERT(DATETIME2,'$(CURRENT_DATE)',126)
0 голосов
/ 25 апреля 2020

Вы используете неправильный параметр style в своей функции convert.
Для ISO8601 вы должны использовать 126, а не 106, как вы делаете сейчас.

Это должно работать:

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

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