SQL XML dd/mm/yyyy无法作为字符串返回
我使用的是一个遗留系统,它只接受XML中数据字段的dd/mm/yyyy,否则会弄乱数据输入 我尝试了各种方法来强制我的数据字段显示为dd/mm/yyyy,我尝试了转换为DATETIME 103,我尝试了将其声明为VARCHAR,每次返回时都是2018-05-11 如何强制返回的字段显示为DD/MM/YYYY,这是我的代码片段,请原谅它有多凌乱不幸的是,它是非常线性的,接受XML的系统是非常基本的SQL XML dd/mm/yyyy无法作为字符串返回,sql,sql-server,Sql,Sql Server,我使用的是一个遗留系统,它只接受XML中数据字段的dd/mm/yyyy,否则会弄乱数据输入 我尝试了各种方法来强制我的数据字段显示为dd/mm/yyyy,我尝试了转换为DATETIME 103,我尝试了将其声明为VARCHAR,每次返回时都是2018-05-11 如何强制返回的字段显示为DD/MM/YYYY,这是我的代码片段,请原谅它有多凌乱不幸的是,它是非常线性的,接受XML的系统是非常基本的 SELECT TOP 1 1 'job/queue', @Branch 'job/br
SELECT TOP 1 1 'job/queue',
@Branch 'job/branch',
CASE WHEN myli.PolRef@ IS NOT NULL THEN 'update-broomsrisk' ELSE 'create-broomsrisk' END 'parameters/yzt/char20.1',
SUBSTRING(@PolicyRef,1,6) 'broomsdata/broomsclient/bcm/refno',
@PolicyRef 'broomsdata/broomspolicy/bpy/refno',
CASE WHEN myli.PolRef@ IS NOT NULL THEN myli.key@ ELSE NULL END 'broomsdata/broomspolicy/myli/KEY',
(SELECT ISNULL(ct2.convictiondate,ct2.offencedate) FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 1) 'broomsdata/broomspolicy/myli/Date1',
(SELECT ct2.code FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 1) 'broomsdata/broomspolicy/myli/Code1',
(SELECT ct2.fine FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 1) 'broomsdata/broomspolicy/myli/Fine1',
(SELECT ct2.noofpoints FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 1) 'broomsdata/broomspolicy/myli/Points1',
(SELECT ISNULL(ct2.convictiondate,ct2.offencedate) FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 2) 'broomsdata/broomspolicy/myli/Date2',
(SELECT ct2.code FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 2) 'broomsdata/broomspolicy/myli/Code2',
(SELECT ct2.fine FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 2) 'broomsdata/broomspolicy/myli/Fine2',
(SELECT ct2.noofpoints FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 2) 'broomsdata/broomspolicy/myli/Points2',
(SELECT ISNULL(ct2.convictiondate,ct2.offencedate) FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 3) 'broomsdata/broomspolicy/myli/Date3',
(SELECT ct2.code FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 3) 'broomsdata/broomspolicy/myli/Code3',
(SELECT ct2.fine FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 3) 'broomsdata/broomspolicy/myli/Fine3',
(SELECT ct2.noofpoints FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 3) 'broomsdata/broomspolicy/myli/Points3',
(SELECT ISNULL(ct2.convictiondate,ct2.offencedate) FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 4) 'broomsdata/broomspolicy/myli/Date4',
(SELECT ct2.code FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 4) 'broomsdata/broomspolicy/myli/Code4',
(SELECT ct2.fine FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 4) 'broomsdata/broomspolicy/myli/Fine4',
(SELECT ct2.noofpoints FROM #ConvictionTable AS ct2 WHERE ct2.RowNo = 4) 'broomsdata/broomspolicy/myli/Points4'
FROM #ConvictionTable AS ct
LEFT OUTER JOIN [FIG-SQL-SRV].InfoCentre.dbo.ic_BD_MYLI AS myli ON ct.branch = myli.B@ AND ct.policyRef = myli.PolRef@
FOR XML PATH('xmlexecute'), TYPE;
我试图强制的字段是'Date1'/'Date2'等字段
干杯使用转换(varchar(10),YourDateColumn,103)
。我认为您的错误是试图转换为datetime(我猜您在使用样式代码时尝试了转换(datetime,YourDateColumn,103)
);SQL Server中的日期/时间数据类型没有格式。试图格式化它们不会起任何作用
例如:选择CONVERT(varchar(10),GETDATE(),103)
返回varchar(10)
值'11/05/2018'
编辑:下面是(临时)帮助OP展示我如何为OpenInterchange创建XML。OP使用了大量的子选择,这无助于提高查询速度。我已经强调了OP需要注意的几点:
SELECT K.Insco AS Insurer,
K.B@ AS Branch,
K.PolRef@ AS PolicyRef,
K.ClaimRef@ AS ClaimRef,
--XML Generation starts here.
(SELECT(SELECT K.B@ AS branch,
'OO' AS operator,
'PDF' AS printtype
FOR XML PATH('job'),TYPE),
(SELECT (SELECT 'update-claim' AS [Char20.1]
FOR XML PATH('yzt'),TYPE)
FOR XML PATH('parameters'),TYPE),
(SELECT (SELECT (SELECT K.Ref@ AS Refno
FOR XML PATH('bcm'),TYPE)
FOR XML PATH('broomsclient'),TYPE),
(SELECT (SELECT K.PolRef@ AS Refno
FOR XML PATH('bpy'),TYPE)
FOR XML PATH('broomspolicy'),TYPE),
(SELECT (SELECT K.ClaimRef@ AS [Claim.No],
K.[Claim No] AS [Ins.Claim.Ref],
K.KGMSettled AS [Claim.Settled],
K.KGMReserve AS [Claim.Reserve],
K.KGMReserve + K.KGMSettled As [Claim.Amount],
K.KGMStatus AS [Stat.Desc],
CASE K.KGMStatus WHEN 'Settled' THEN 'SETT'
WHEN 'Ouststanding' THEN 'OUTS'
WHEN 'Declined' THEN 'DECL'
WHEN 'Not Taken up' THEN 'NTUP'
WHEN 'Withdrawn' THEN 'WITH' END AS [stat.code],
CONVERT(varchar(10),K.[Notified Date],103) AS [Date.repd], --First example of the dd/MM/yyyy format
CONVERT(varchar(10),K.[Loss Date],103) AS [Loss.date], --Another example of the dd/MM/yyyy format
CASE WHEN K.[Date Closed] IS NOT NULL THEN CONVERT(varchar(10), GETDATE(), 103) END AS [Stat.date], -- and another example of the dd/MM/yyyy format
CONVERT(varchar(10),K.[Date Closed],103) AS [Date.Settled], --you get the idea. :)
CASE WHEN K.[Date Closed] IS NOT NULL AND K.[Incident Type] = 'Windscreen' THEN 'Yes'
WHEN K.[Date Closed] IS NULL THEN ''
WHEN K.[NCB Decision] = 'Allowed' THEN 'Yes'
WHEN K.[NCB Decision] = 'Disallowed' THEN 'Yes' END AS [Settled.free]
/*
CASE WHEN K.[Date Closed] IS NOT NULL AND K.[Incident Type] = 'Windscreen' THEN 'Yes'
WHEN K.KGMReserve + K.KGMSettled = 0 AND K.[Date Closed] IS NOT NULL THEN 'Yes'
WHEN K.KGMReserve + K.KGMSettled > 0 AND K.[Date Closed] IS NOT NULL THEN 'No'
ELSE '' END AS [Settled.free]*/
FOR XML PATH('bch'),TYPE),
(SELECT K.BCAKey AS [KEY],
K.[Vehicle Reg# No] AS [Reg.no],
K.[Driver Name] AS [Driver],
K.[ AD Paid] AS [Pay.ad],
K.[AD Reserve] AS [Reserve.ad],
K.[TPD Paid] + K.[TPI Paid] AS [Pay.tp],
K.[TPD Reserve] + K.[TPI Reserve] AS [Reserve.tp],
--K.[TPI Paid] AS [Pay.others],
--K.[TPI Reserve] AS [Reserve.others],
0 AS [Pay.others],
0 AS [Reserve.others],
K.KGMSettled AS [Pay.total],
K.KGMReserve AS [Reserve.Total],
K.[Recovery] AS [Pay.recovs],
K.[AD Recovery Reserve] AS [Reserve.recovs],
'Updated by FileDrop Service. XML Generated on ' + CONVERT(varchar(10),GETDATE(),103) as [Remarks4]
FOR XML PATH('bca'),TYPE),
(SELECT CONVERT(varchar(10),GETDATE(),103) AS [date],
LEFT(CONVERT(varchar(10),GETDATE(),108),5) AS [time],
'OO' AS [op],
'FileDrop' AS [Name],
K.KGMSettled AS [Settled],
K.KGMReserve AS [Reserve],
K.KGMSettled + K.KGMReserve As [Total],
--CONVERT(varchar(10),K.DataToDate,103) AS [EffDate],
CASE WHEN K.KGMSettled != K.BCHSettled THEN 'Payment'
WHEN K.KGMReserve != K.BCHReserve THEN 'Reserve Adjustment'
ELSE 'Payment' END AS [Notes]
FOR XML PATH('clam'),TYPE)
FOR XML PATH('broomsclaim'),TYPE)
FOR XML PATH('broomsdata'),TYPE)
FOR XML PATH('xmlexecute'),TYPE) AS InputXML,
GETDATE() AS DateGenerated,
0 AS TestLoad
FROM KGMCGStandard_viw K
WHERE K.ClaimsFound = 1
AND K.KGMFound = 1
AND (K.KGMSettled != K.BCHSettled
OR K.KGMReserve != K.BCHReserve
OR (CONVERT(date,K.KGMClosure) != CONVERT(date,BCHClosure)
OR (K.KGMClosure IS NULL AND K.BCHClosure IS NOT NULL)
OR (K.KGMClosure IS NOT NULL AND K.BCHClosure IS NULL))
OR (CASE WHEN K.[Date Closed] IS NOT NULL AND K.[Incident Type] = 'Windscreen' THEN 'Yes'
WHEN K.[NCB Decision] = 'Allowed' THEN 'Yes'
WHEN K.[NCB Decision] = 'Disallowed' THEN 'No' END != K.Settled_Free
OR (K.[Date Closed] IS NULL AND K.Settled_free IS NULL)))
AND NOT EXISTS (SELECT 1
FROM AutoloadXML_tbl A
WHERE A.Branch = K.B@
AND A.PolicyRef = K.PolRef@
AND A.ClaimRef = K.ClaimRef@
AND (A.DateSubmitted IS NULL
OR A.Installed = 0))
ORDER BY K.ClaimRef@ ASC;
使用CONVERT(varchar(10),YourDateColumn,103)
。我认为您的错误是试图转换为datetime(我猜您在使用样式代码时尝试了转换(datetime,YourDateColumn,103)
);SQL Server中的日期/时间数据类型没有格式。试图格式化它们不会起任何作用
例如:选择CONVERT(varchar(10),GETDATE(),103)
返回varchar(10)
值'11/05/2018'
编辑:下面是(临时)帮助OP展示我如何为OpenInterchange创建XML。OP使用了大量的子选择,这无助于提高查询速度。我已经强调了OP需要注意的几点:
SELECT K.Insco AS Insurer,
K.B@ AS Branch,
K.PolRef@ AS PolicyRef,
K.ClaimRef@ AS ClaimRef,
--XML Generation starts here.
(SELECT(SELECT K.B@ AS branch,
'OO' AS operator,
'PDF' AS printtype
FOR XML PATH('job'),TYPE),
(SELECT (SELECT 'update-claim' AS [Char20.1]
FOR XML PATH('yzt'),TYPE)
FOR XML PATH('parameters'),TYPE),
(SELECT (SELECT (SELECT K.Ref@ AS Refno
FOR XML PATH('bcm'),TYPE)
FOR XML PATH('broomsclient'),TYPE),
(SELECT (SELECT K.PolRef@ AS Refno
FOR XML PATH('bpy'),TYPE)
FOR XML PATH('broomspolicy'),TYPE),
(SELECT (SELECT K.ClaimRef@ AS [Claim.No],
K.[Claim No] AS [Ins.Claim.Ref],
K.KGMSettled AS [Claim.Settled],
K.KGMReserve AS [Claim.Reserve],
K.KGMReserve + K.KGMSettled As [Claim.Amount],
K.KGMStatus AS [Stat.Desc],
CASE K.KGMStatus WHEN 'Settled' THEN 'SETT'
WHEN 'Ouststanding' THEN 'OUTS'
WHEN 'Declined' THEN 'DECL'
WHEN 'Not Taken up' THEN 'NTUP'
WHEN 'Withdrawn' THEN 'WITH' END AS [stat.code],
CONVERT(varchar(10),K.[Notified Date],103) AS [Date.repd], --First example of the dd/MM/yyyy format
CONVERT(varchar(10),K.[Loss Date],103) AS [Loss.date], --Another example of the dd/MM/yyyy format
CASE WHEN K.[Date Closed] IS NOT NULL THEN CONVERT(varchar(10), GETDATE(), 103) END AS [Stat.date], -- and another example of the dd/MM/yyyy format
CONVERT(varchar(10),K.[Date Closed],103) AS [Date.Settled], --you get the idea. :)
CASE WHEN K.[Date Closed] IS NOT NULL AND K.[Incident Type] = 'Windscreen' THEN 'Yes'
WHEN K.[Date Closed] IS NULL THEN ''
WHEN K.[NCB Decision] = 'Allowed' THEN 'Yes'
WHEN K.[NCB Decision] = 'Disallowed' THEN 'Yes' END AS [Settled.free]
/*
CASE WHEN K.[Date Closed] IS NOT NULL AND K.[Incident Type] = 'Windscreen' THEN 'Yes'
WHEN K.KGMReserve + K.KGMSettled = 0 AND K.[Date Closed] IS NOT NULL THEN 'Yes'
WHEN K.KGMReserve + K.KGMSettled > 0 AND K.[Date Closed] IS NOT NULL THEN 'No'
ELSE '' END AS [Settled.free]*/
FOR XML PATH('bch'),TYPE),
(SELECT K.BCAKey AS [KEY],
K.[Vehicle Reg# No] AS [Reg.no],
K.[Driver Name] AS [Driver],
K.[ AD Paid] AS [Pay.ad],
K.[AD Reserve] AS [Reserve.ad],
K.[TPD Paid] + K.[TPI Paid] AS [Pay.tp],
K.[TPD Reserve] + K.[TPI Reserve] AS [Reserve.tp],
--K.[TPI Paid] AS [Pay.others],
--K.[TPI Reserve] AS [Reserve.others],
0 AS [Pay.others],
0 AS [Reserve.others],
K.KGMSettled AS [Pay.total],
K.KGMReserve AS [Reserve.Total],
K.[Recovery] AS [Pay.recovs],
K.[AD Recovery Reserve] AS [Reserve.recovs],
'Updated by FileDrop Service. XML Generated on ' + CONVERT(varchar(10),GETDATE(),103) as [Remarks4]
FOR XML PATH('bca'),TYPE),
(SELECT CONVERT(varchar(10),GETDATE(),103) AS [date],
LEFT(CONVERT(varchar(10),GETDATE(),108),5) AS [time],
'OO' AS [op],
'FileDrop' AS [Name],
K.KGMSettled AS [Settled],
K.KGMReserve AS [Reserve],
K.KGMSettled + K.KGMReserve As [Total],
--CONVERT(varchar(10),K.DataToDate,103) AS [EffDate],
CASE WHEN K.KGMSettled != K.BCHSettled THEN 'Payment'
WHEN K.KGMReserve != K.BCHReserve THEN 'Reserve Adjustment'
ELSE 'Payment' END AS [Notes]
FOR XML PATH('clam'),TYPE)
FOR XML PATH('broomsclaim'),TYPE)
FOR XML PATH('broomsdata'),TYPE)
FOR XML PATH('xmlexecute'),TYPE) AS InputXML,
GETDATE() AS DateGenerated,
0 AS TestLoad
FROM KGMCGStandard_viw K
WHERE K.ClaimsFound = 1
AND K.KGMFound = 1
AND (K.KGMSettled != K.BCHSettled
OR K.KGMReserve != K.BCHReserve
OR (CONVERT(date,K.KGMClosure) != CONVERT(date,BCHClosure)
OR (K.KGMClosure IS NULL AND K.BCHClosure IS NOT NULL)
OR (K.KGMClosure IS NOT NULL AND K.BCHClosure IS NULL))
OR (CASE WHEN K.[Date Closed] IS NOT NULL AND K.[Incident Type] = 'Windscreen' THEN 'Yes'
WHEN K.[NCB Decision] = 'Allowed' THEN 'Yes'
WHEN K.[NCB Decision] = 'Disallowed' THEN 'No' END != K.Settled_Free
OR (K.[Date Closed] IS NULL AND K.Settled_free IS NULL)))
AND NOT EXISTS (SELECT 1
FROM AutoloadXML_tbl A
WHERE A.Branch = K.B@
AND A.PolicyRef = K.PolRef@
AND A.ClaimRef = K.ClaimRef@
AND (A.DateSubmitted IS NULL
OR A.Installed = 0))
ORDER BY K.ClaimRef@ ASC;
由于您已经计算出了日期部分,我将把它留给您,但是您的查询可以通过使用条件聚合来简化。我在列名周围使用了方括号,而不是单引号。当然,这些工作,但我认为这是一个坏习惯,因为很难决定它是一个字符串文字或列别名。我也更喜欢使用alias=但这更像是一种偏好。我也更喜欢前导逗号,这也是我的偏好 非常确定这个查询应该做同样的事情
SELECT 1 as 'job/queue',
@Branch as 'job/branch',
CASE WHEN myli.PolRef@ IS NOT NULL THEN 'update-broomsrisk' ELSE 'create-broomsrisk' END as 'parameters/yzt/char20.1',
SUBSTRING(@PolicyRef,1,6) as 'broomsdata/broomsclient/bcm/refno',
@PolicyRef as 'broomsdata/broomspolicy/bpy/refno',
CASE WHEN myli.PolRef@ IS NOT NULL THEN myli.key@ ELSE NULL END as 'broomsdata/broomspolicy/myli/KEY'
, [broomsdata/broomspolicy/myli/Date1] = max(case when ct.RowNo = 1 then ISNULL(ct.convictiondate, ct.offencedate) end)
, [broomsdata/broomspolicy/myli/Code1] = max(case when ct.RowNo = 1 then ct.code end)
, [broomsdata/broomspolicy/myli/Fine1] = max(case when ct.RowNo = 1 then ct.fine end)
, [broomsdata/broomspolicy/myli/Points1] = max(case when ct.RowNo = 1 then ct.noofpoints end)
, [broomsdata/broomspolicy/myli/Date2] = max(case when ct.RowNo = 2 then ISNULL(ct.convictiondate, ct.offencedate) end)
, [broomsdata/broomspolicy/myli/Code2] = max(case when ct.RowNo = 2 then ct.code end)
, [broomsdata/broomspolicy/myli/Fine2] = max(case when ct.RowNo = 2 then ct.fine end)
, [broomsdata/broomspolicy/myli/Points] = max(case when ct.RowNo = 2 then ct.noofpoints end)
, [broomsdata/broomspolicy/myli/Date3] = max(case when ct.RowNo = 3 then ISNULL(ct.convictiondate, ct.offencedate) end)
, [broomsdata/broomspolicy/myli/Code3] = max(case when ct.RowNo = 3 then ct.code end)
, [broomsdata/broomspolicy/myli/Fine3] = max(case when ct.RowNo = 3 then ct.fine end)
, [broomsdata/broomspolicy/myli/Points3] = max(case when ct.RowNo = 3 then ct.noofpoints end)
, [broomsdata/broomspolicy/myli/Date4] = max(case when ct.RowNo = 4 then ISNULL(ct.convictiondate, ct.offencedate) end)
, [broomsdata/broomspolicy/myli/Code4] = max(case when ct.RowNo = 4 then ct.code end)
, [broomsdata/broomspolicy/myli/Fine4] = max(case when ct.RowNo = 4 then ct.fine end)
, [broomsdata/broomspolicy/myli/Points4] = max(case when ct.RowNo = 4 then ct.noofpoints end)
FROM #ConvictionTable AS ct
LEFT OUTER JOIN [FIG-SQL-SRV].InfoCentre.dbo.ic_BD_MYLI AS myli ON ct.branch = myli.B@ AND ct.policyRef = myli.PolRef@
GROUP BY @Branch
, CASE WHEN myli.PolRef@ IS NOT NULL THEN 'update-broomsrisk' ELSE 'create-broomsrisk' END
, SUBSTRING(@PolicyRef,1,6)
, @PolicyRef
, CASE WHEN myli.PolRef@ IS NOT NULL THEN myli.key@ ELSE NULL END
FOR XML PATH('xmlexecute'), TYPE
由于您已经计算出了日期部分,我将把它留给您,但是您的查询可以通过使用条件聚合来简化。我在列名周围使用了方括号,而不是单引号。当然,这些工作,但我认为这是一个坏习惯,因为很难决定它是一个字符串文字或列别名。我也更喜欢使用alias=但这更像是一种偏好。我也更喜欢前导逗号,这也是我的偏好 非常确定这个查询应该做同样的事情
SELECT 1 as 'job/queue',
@Branch as 'job/branch',
CASE WHEN myli.PolRef@ IS NOT NULL THEN 'update-broomsrisk' ELSE 'create-broomsrisk' END as 'parameters/yzt/char20.1',
SUBSTRING(@PolicyRef,1,6) as 'broomsdata/broomsclient/bcm/refno',
@PolicyRef as 'broomsdata/broomspolicy/bpy/refno',
CASE WHEN myli.PolRef@ IS NOT NULL THEN myli.key@ ELSE NULL END as 'broomsdata/broomspolicy/myli/KEY'
, [broomsdata/broomspolicy/myli/Date1] = max(case when ct.RowNo = 1 then ISNULL(ct.convictiondate, ct.offencedate) end)
, [broomsdata/broomspolicy/myli/Code1] = max(case when ct.RowNo = 1 then ct.code end)
, [broomsdata/broomspolicy/myli/Fine1] = max(case when ct.RowNo = 1 then ct.fine end)
, [broomsdata/broomspolicy/myli/Points1] = max(case when ct.RowNo = 1 then ct.noofpoints end)
, [broomsdata/broomspolicy/myli/Date2] = max(case when ct.RowNo = 2 then ISNULL(ct.convictiondate, ct.offencedate) end)
, [broomsdata/broomspolicy/myli/Code2] = max(case when ct.RowNo = 2 then ct.code end)
, [broomsdata/broomspolicy/myli/Fine2] = max(case when ct.RowNo = 2 then ct.fine end)
, [broomsdata/broomspolicy/myli/Points] = max(case when ct.RowNo = 2 then ct.noofpoints end)
, [broomsdata/broomspolicy/myli/Date3] = max(case when ct.RowNo = 3 then ISNULL(ct.convictiondate, ct.offencedate) end)
, [broomsdata/broomspolicy/myli/Code3] = max(case when ct.RowNo = 3 then ct.code end)
, [broomsdata/broomspolicy/myli/Fine3] = max(case when ct.RowNo = 3 then ct.fine end)
, [broomsdata/broomspolicy/myli/Points3] = max(case when ct.RowNo = 3 then ct.noofpoints end)
, [broomsdata/broomspolicy/myli/Date4] = max(case when ct.RowNo = 4 then ISNULL(ct.convictiondate, ct.offencedate) end)
, [broomsdata/broomspolicy/myli/Code4] = max(case when ct.RowNo = 4 then ct.code end)
, [broomsdata/broomspolicy/myli/Fine4] = max(case when ct.RowNo = 4 then ct.fine end)
, [broomsdata/broomspolicy/myli/Points4] = max(case when ct.RowNo = 4 then ct.noofpoints end)
FROM #ConvictionTable AS ct
LEFT OUTER JOIN [FIG-SQL-SRV].InfoCentre.dbo.ic_BD_MYLI AS myli ON ct.branch = myli.B@ AND ct.policyRef = myli.PolRef@
GROUP BY @Branch
, CASE WHEN myli.PolRef@ IS NOT NULL THEN 'update-broomsrisk' ELSE 'create-broomsrisk' END
, SUBSTRING(@PolicyRef,1,6)
, @PolicyRef
, CASE WHEN myli.PolRef@ IS NOT NULL THEN myli.key@ ELSE NULL END
FOR XML PATH('xmlexecute'), TYPE
列,而不是字段。神圣子查询重载蝙蝠侠。您不需要像这样一遍遍地从同一个表中查询子查询。一些条件聚合可以解决这个问题,更简单。列,而不是字段。神圣的子查询重载蝙蝠侠。您不需要像这样一遍遍地从同一个表中查询子查询。一些条件聚合可以解决这个问题,这要简单得多。Hi Larnu,当管道输出到XML时,它仍然返回yyyy-mm-dd.2015-06-05@Lynchie事实并非如此。我每天都使用SQL(不是开玩笑,我必须通过XML将100个保险索赔详细信息输入到系统中,并且我必须对每个日期值使用
dd/MM/yyyy
格式)。尝试选择CONVERT(varchar(10),GETDATE(),103)作为XML路径(“根”)的日期值代码>。返回值为11/05/2018
CONVERT(VARCHAR(10),(从#conficationTable AS ct2,其中ct2.RowNo=1),103)“broomsdata/broomspolicy/myli/Date1”中选择ISNULL(ct2.conficationdate,ct2.offencedate),仍然返回2015-06-05,而不是2015年06月05日。听起来你在其他地方有一个隐式转换;因此,varchar
值被转换回日期
。这显然是为了OpenGI的开放交换,这就是我使用上述SQL的目的;我知道它能用。:)使用它时,它不会将返回的信息视为日期。转换(VARCHAR(12),CAST((选择ISNULL(ct2.confirationdate,ct2.offencedate)从#confirationtable AS ct2,其中ct2.RowNo=1)转换为日期),103)'broomsdata/broomspolicy/myli/Date1',Hi Larnu,当管道输出到XML时,仍然返回yyyy-mm-dd.2015-06-05@Lynchie事实并非如此。我每天都使用SQL(不是开玩笑,我必须通过XML将100个保险索赔详细信息输入到系统中,并且我必须对每个日期值使用dd/MM/yyyy
格式)。尝试选择CONVERT(varchar(10),GETDATE(),103)作为XML路径(“根”)的日期值代码>。返回值为11/05/2018
CONVERT(VARCHAR(10),(从#conficationTable AS ct2,其中ct2.RowNo=1),103)“broomsdata/broomspolicy/myli/Date1”中选择ISNULL(ct2.conficationdate,ct2.offencedate),仍然返回2015-06-05,而不是2015年06月05日。听起来你在其他地方有一个隐式转换;因此,varchar
值被转换回日期
。这显然是为了OpenGI的开放交换,这就是我使用上述SQL的目的;我知道它能用。:)使用它时,它不会将返回的信息视为日期。转换(VARCHAR(12),CAST((选择ISNULL(ct2.confirationdate,ct2.offencedate)从#confirationtable AS ct2,其中ct2.RowNo=1)转换为日期),103)'bromsdata/bromspolicy/myli/Date1',