insert 到 WMC_Savexmldata
选择 '496200-01-1|03/31/2018 11:18:29|03/31/2018 16:18:29|133015;245000-01-1|03/31/2018
16:18:29|03/31/2018 21:18:29|133017;262100-13-1|03/31/2018 21:18:29|04/01/2018 02:18:29|133018;'
请像这样插入数据(附件)。日期在一行中,时间在另一行中,然后运行以下查询。由于日期和时间之间的空间错误,您将收到日期时间转换错误。我只想在日期之间休息一下。由于它来自浏览器,因此日期在 SQL 中带有空格。请帮助解决这个问题。你清楚我的问题吗?
声明@InputSepTmp 表
(
id int,
输入 nvarchar(max)
)
插入@InputSepTmp
选择 Row_Number() over (Order By (Select null))
, LTrim(RTrim(B.i.value('(./text())1', 'varchar(max)')))
From (Select x = Cast('' + replace((Select replace(XML,';','§§Split§§') as [*] For XML Path('')),'§§Split§§' ,'')+'' as xml).query('.')
来自 WMC_Savexmldata) 作为 A
交叉应用 x.nodes('x') AS B(i)
-- select * from @InputSepTmp
--- Cursor --------------------
SET NOCOUNT ON
DECLARE @InputID varchar(200)
DECLARE cur_InputSeparator CURSOR
STATIC FOR
select id from @InputSepTmp where Inputs <> ''
OPEN cur_InputSeparator
IF @@CURSOR_ROWS > 0
BEGIN
FETCH NEXT FROM cur_InputSeparator INTO @InputID
WHILE @@Fetch_status = 0
BEGIN
DEclare @FinalInputtmp table
(
id int,
IPValues varchar(100)
)
insert into @FinalInputtmp
-- SELECT
-- Split.a.value('.', 'NVARCHAR(max)') AS 字符串
--FROM(选择
-- CAST ('' + REPLACE(LTRIM(RTRIM(Inputs)), ',', '') + '' AS XML) 作为字符串
-- from @InputSepTmp T1 where id=@InputID) AS A CROSS APPLY String.nodes ('/M') AS Split(a);
Select Row_Number() over (Order By (Select null))
, LTrim(RTrim(B.i.value('(./text())1', 'varchar(max)')))
From (Select x = Cast('' + replace((Select replace(LTRIM(RTRIM(Inputs)),'|','§§Split§§') as [*] For XML Path('')),' §§拆分§§','')+'' as xml).query('.')
来自@InputSepTmp,其中 id = @InputID) 作为 A
交叉应用 x.nodes('x') AS B(i)
--select convert(datetime,'04/12/2018 12:50:08')
insert into WMC_CriticalPath_ScheduledDtls (SWOPACKAGENO,TASKNO,SCHEDULEDSTDATE,SCHEDULEDENDDATE,TRACKID,CreatedDate,ModifiedDate)
SELECT 'adjb', MAX(CASE WHEN D.RN=1 THEN LTRIM(RTRIM(D.IPValues)) END)[task no]
,MAX(CASE WHEN D.RN=2 THEN LTRIM(RTRIM(D.IPValues)) END) [start date]
,MAX(CASE WHEN D.RN=3 THEN LTRIM(RTRIM(D.IPValues)) END) [end date]
,MAX(CASE WHEN D.RN=4 THEN LTRIM(RTRIM(D.IPValues)) END) [id], Getdate(),NULL
来自(
选择 *
,ROW_NUMBER() OVER(ORDER BY (SELECT NULL))RN
来自@FinalInputtmp
)D
delete from @FinalInputtmp
FETCH NEXT FROM cur_InputSeparator INTO @InputID
END
END
CLOSE cur_InputSeparator
DEALLOCATE cur_InputSeparator
SET NOCOUNT OFF
--从 WMC_CriticalPath_ScheduledDtls 中选择 *
从 WMC_CriticalPath_ScheduledDtls 中选择 *