我正在使用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
这是我通过上面的代码得到的结果:
如果我将日期(H1TMTR)行更改为
,convert(TIME,right('000000'+str([H1TMTR],len([H1TMTR])),6)) as 'AssyTime'
我收到以下错误: “ Msg 241,第16级,州1,第4行 从字符串转换日期和/或时间时转换失败。“
有什么提示吗?预先感谢!
答案 0 :(得分:0)
您可以通过填充,子串化并将冒号插入各部分之间来进行转换,如下所示:
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进行此操作,所以我想您会做很多。您应该制作一个在列上执行此任务的标量函数,因此只需要编写一次即可。