Преобразование SAP nVARCHAR в дату - PullRequest
0 голосов
/ 09 июля 2019

Я использую SSRS 2017 для запроса базы данных SAP hana с использованием соединения ODBC.

Я возвращаю столбец даты BUDAT как 20190101.Я пытаюсь преобразовать это в дату, но на экране Sataset не позволяет мне использовать команду CONVERT или FORMAT:

Попытка # 1:

CONVERT(DATE, RIGHT(SAPABAP1.AFRU.BUDAT, 2) + SUBSTR(SAPABAP1.AFRU.BUDAT, 3, 2) + LEFT (SAPABAP1.AFRU.BUDAT, 4))

Я получаю ошибку

Недопустимое или отсутствующее выражение

, когда я "ввожу" введенный код.

Попытка # 2

format(SAPABAP1.AFRU.BUDAT, "dd/MM/yyyy") 

SQL Server принимает синтаксис, но при попытке выполнения запроса я получаю сообщение об ошибке

Общая ошибка; 260 недопустимое имя столбца; дд / мм / гггг: строка 1 столбец 1029 (как позиция 1028))

Последние несколько дней я потратил на пробные темы для этого кода, но безрезультатно

Я хотел бы видеть вывод как dd/MM/yyyy.

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Доброе утро, спасибо, что нашли время ответить.

2-CONVERT (datetime, SAPABAP1.AFRU.BUDAT, 112) - когда я ввожу код на стороне SQL в «столбце»где весь код идет, когда я нажимаю клавишу ВВОД, чтобы принять код, я получаю всплывающее окно с ошибкой Microsoft Visual Studio, в котором написано «ошибка подсчета аргументов функции», и я не могу принять код, как вы написали.

2- Скопируйте и вставьте CAST (SAPABAP1.AFRU.BUDAT как datetime) в - нажмите enter. Я получаю сообщение об ошибке: недопустимое или отсутствующее выражение.

Мне удалось получить дату, похожую на формат даты, используя:

CONCAT (CONCAT (RIGHT (BUDAT, 2), SUBSTR (BUDAT, 5, 2)), LEFT (BUDAT, 4))

Это дает выходные данные от BUDAT с 20190104 по 04012019 (который близок к тому, что мне нужно).

Теперь 1-

Используя приведенный выше код, который работает для получения 01012019, я затем использовал ваш код для преобразования этого текста в дату и затем отформатировал ее (примечаниеЯ изменил название поля с Budat на postg_date для clarity):

= Format (Cdate (Fields! POSTG_DATE.Value), "ddMMyyyy")

Вывод в ssrs при запуске дает мне #ERROR в поле вывода. Я пытался включитьснимок экрана, но мне для этого нужно 10 очков повторения: (

В настоящее время мы получаем информацию, которую я просматриваю, через ночную загрузку из SAP, которая поступает на сервер, на котором установлено программное обеспечение, называемое "юниверс", которое затемвпрыснул в SQL, что я код против.Считаете ли вы, что SQL 2017 не может преобразовать информацию непосредственно из SAP в формат, который она может прочитать

0 голосов
/ 09 июля 2019

Как только вы используете поле DATS в формате ГГГГММДД, вам нужно будет преобразовать строку в реальное значение даты.

Предположим, SAPABAP1.AFRU.BUDAT является допустимой строкой для анализа:

Для # 1 (сценарий SSRS) необходимо использовать Format(Cdate(SAPABAP1.AFRU.BUDAT),"yyyyMMdd").

Для # 2 (SQLСерверный сценарий), вам нужно использовать CONVERT(datetime,SAPABAP1.AFRU.BUDAT,112), где «112» обозначает yyyyMMdd.Вы также можете опустить 112, так как yyyyMMdd - это формат ISO.Кроме того, вы можете сделать CAST(SAPABAP1.AFRU.BUDAT as datetime).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...