это действительно сбивало меня с толку в течение нескольких дней, и я ищу помощи. Я использую SQL Server 2017.
Я пытаюсь обрабатывать строки из поля свободного формата и либо преобразовывать их в дату в формате «дд/мм/гггг», либо, если они не в этом формате, просто отображать текст дословно.
Мне нужно это в ПРЕДСТАВЛЕНИИ, поэтому я не могу использовать SET LANGUAGE. Звучит просто, используя конвертировать и исдата но, похоже, не работает.
Итак, для фрагмента кода ниже (помните, что это будет в VIEW) я хочу прочитать текст, и если строка преобразуется в дату (т.находится в формате «дд/мм/гггг», затем запустите преобразование в дату, поскольку мне это нужно в формате даты, чтобы Excel мог подобрать (через базу данных Connect SQL Sever)), и если он не преобразуется в дату, то отображать текст как есть.
создать таблицу dateTest1
(внутренний идентификатор,
dateStringTest varchar (15)
);
вставить в dateTest1 (idx, dateStringTest)
значения (1, '01.13.2021'), (2, 'нет');
Выбрать
случай, когда isdate(convert(datetime, dateStringTest, 103)) = 1
затем конвертировать (datetime, dateStringTest, 103)
иначе dateStringTest
конец как dtres
с датыTest1
--где IDx = 1
-- ошибка: сообщение 241, уровень 16, состояние 1, строка 15 Преобразование не удалось при преобразовании даты и/или времени из символьной строки.
-- эта ошибка возникает для idx = 2. Idx = 1 работает нормально
Любая помощь в этом будет принята с благодарностью, так как это делает мою голову.
заранее спасибо
Павел