使用 XSLT 函数将日期转换为 SQL 格式



输入日期格式:2019-07-09-10.56.24.147431

所需日期格式:09-JUL-19

我需要在XSLT (version 1.0)中执行上述操作

我尝试了以下方法:

<xsl:value-of select="concat (substring (xp20:format-dateTime(substring(/ns0:outbound/ns0:cancel_wrk/ns0:hdr_data/ns0:ts_ext, 1,10),'[DD]-[MNn,3-3]-[YYYY]'), 1,6 ), substring (year-from-date (date(substring(/ns0:outbound/ns0:cancel_wrk/ns0:hdr_data/ns0:ts_ext, 1,10))), 3 ) )"/>
<tns:xtrnlSysDttm>
<xsl:value-of select="concat (substring (xp20:format-dateTime(substring(/ns0:outbound/ns0:cancel_wrk/ns0:hdr_data/ns0:ts_ext, 1,10),'[DD]-[MNn,3-3]-[YYYY]'), 1,6 ), substring (year-from-date (date(substring(/ns0:outbound/ns0:cancel_wrk/ns0:hdr_data/ns0:ts_ext, 1,10))), 3 ) )"/> 
</tns:xtrnlSysDttm>

插入 SQL 数据库时出现错误消息,显示上述 XSLT 的结果:

捆绑。JCA-12563 调用绑定时发生异常。 调用 JCA 绑定期间发生异常:"由于以下原因,引用操作'插入'的 JCA 绑定执行失败:DBWriteInteractionSpec 执行失败异常。 插入失败。描述符名称:[GBE_INT_CSS_PQ_PQFFEFO。PqffefoProxy]。 由异常 [EclipseLink-3001] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd) 引起的): org.eclipse.persistence.exceptions.ConversionException 异常描述:类 [class java.lang.String] 的对象 [25-Aug-19] 无法转换为 [class java.sql.Timestamp]。 内部异常:绑定。JCA-11635 无法转换日期异常。 无法将 xml 中的字符串值转换为 java.sql.Date。 即使数据库接受表示各种格式的日期的字符串,适配器也只接受表示 xml ISO 日期格式的日期的字符串。 输入值必须采用 ISO 8601 日期格式 YYYY-MM-DD。

我假设输入数据

<root>
<input_date>2019-07-09-10.56.24.147431</input_date>
</root>

对于 XSL:-

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="1.0">
<xsl:template match="/">
<xsl:call-template name="MMM-DD-YYY">
<xsl:with-param name="date" select="'input_date'"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="MMM-DD-YYY">
<xsl:param name="date"/>
<xsl:variable name="year" select="substring(substring-before(root/input_date, '-'), 3,2)"/>
<xsl:variable name="day" select="substring-before(substring-after(substring-after(root/input_date, '-'), '-'), '-')"/>
<xsl:variable name="month">
<xsl:call-template name="month-abbr">
<xsl:with-param name="month" select="substring-before(substring-after(root/input_date, '-'), '-')"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="concat($day,'-',$month,'-',$year)"/>
</xsl:template>
<xsl:template name="month-abbr">
<xsl:param name="month"/>
<xsl:choose>
<xsl:when test="$month = '01'">JAN</xsl:when>
<xsl:when test="$month = '02'">FEB</xsl:when>
<xsl:when test="$month = '03'">MAR</xsl:when>
<xsl:when test="$month = '04'">APR</xsl:when>
<xsl:when test="$month = '05'">MAY</xsl:when>
<xsl:when test="$month = '06'">JUN</xsl:when>
<xsl:when test="$month = '07'">JUL</xsl:when>
<xsl:when test="$month = '08'">AUG</xsl:when>
<xsl:when test="$month = '09'">SEP</xsl:when>
<xsl:when test="$month = '10'">OCT</xsl:when>
<xsl:when test="$month = '11'">NOV</xsl:when>
<xsl:when test="$month = '12'">DEC</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

获取输出

09-七月-19

相关内容

  • 没有找到相关文章

最新更新