Дата преобразования из файла базы данных AS / 400 - PullRequest
0 голосов
/ 03 октября 2018

Я использую MS SQL Server и пытаюсь преобразовать данные о дате и времени во что-то полезное для PowerBi и не могу получить время для работы. Дата в порядке:

USE [CDCP_AEP]
GO

select *
from
(SELECT [H1PROD]
        ,convert(DATE,right('0'+str([H1DTTR],len([H1DTTR])),6),102) as 'AssyDate'
        ,[H1TMTR]
        ,right('000000'+str([H1TMTR],len([H1TMTR])),6) 'TempTime'
        ,[H1TYPE]
        ,[H1LOT]
        ,[H1SORD]
        from [AEBPCSUSRF].[JHP1]
        where [H1TYPE] = 'AF' and [H1LOT] <> '')a
    left join
  (select [P1PROD]
         ,[P1LOT]
  from [AEBPCSUSRF].[PLA1])b
    on a.[H1LOT] = b.[P1LOT]
    GO

Эторезультат, который я получаю с кодом выше:

Result

Если я изменю строку даты (H1TMTR) на

,convert(TIME,right('000000'+str([H1TMTR],len([H1TMTR])),6)) as 'AssyTime'

Iпоявляется следующая ошибка: «Сообщение 241, Уровень 16, Состояние 1, Строка 4 Преобразование не выполнено при преобразовании даты и / или времени из строки символов.»

Есть какие-нибудь советы?Заранее спасибо!

1 Ответ

0 голосов
/ 03 октября 2018

Вы можете конвертировать, добавляя, подстроку и вставляя двоеточия между частями следующим образом:

DECLARE @H1TMTR VARCHAR(6)='155509'
SELECT CONVERT(TIME,
      SUBSTRING(RIGHT('000000' + @H1TMTR,6),1,2) + ':'
    + SUBSTRING(RIGHT('000000' + @H1TMTR,6),3,2) + ':'
    + SUBSTRING(RIGHT('000000' + @H1TMTR,6),5,2)
) AS [Time]

Так как вы делаете это для PowerBI, я предполагаю, что вы будете делать это совсем немного,Вы должны создать скалярную функцию, которая выполняет эту задачу для столбца, поэтому ее нужно записать только один раз.

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