insert into WMC_Savexmldata
select '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;'
Please insert the data like this(attached). Date comes in one line and time comes in another line and then run the below query. You will be getting the date time conversion error because of the space error in between date and time. I just want to breaks between the dates. As it is coming from browser the date is coming with space in the SQL. Please help on this. Are you clear with my question.
Declare @InputSepTmp table
(
id int,
Inputs nvarchar(max)
)
insert into @InputSepTmp
Select 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('.')
from WMC_Savexmldata) as A
Cross Apply 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 String
--FROM (SELECT
-- CAST ('' + REPLACE(LTRIM(RTRIM(Inputs)), ',', '') + '' AS XML) AS String
-- 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('')),'§§Split§§','')+'' as xml).query('.')
from @InputSepTmp where id = @InputID) as A
Cross Apply 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
FROM(
SELECT *
,ROW_NUMBER() OVER(ORDER BY (SELECT NULL))RN
FROM @FinalInputtmp
)D
delete from @FinalInputtmp
FETCH NEXT FROM cur_InputSeparator INTO @InputID
END
END
CLOSE cur_InputSeparator
DEALLOCATE cur_InputSeparator
SET NOCOUNT OFF
--select * from WMC_CriticalPath_ScheduledDtls
select * from WMC_CriticalPath_ScheduledDtls