首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用XSLT函数将日期转换为SQL格式

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

Stack Overflow用户
提问于 2019-08-26 03:29:17
回答 1查看 438关注 0票数 0

输入数据格式:2019-07-09-10.56.24.147431

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

我需要在XSLT (version 1.0)中做上面的工作

我尝试了以下几点:

代码语言:javascript
运行
复制
<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:

在调用绑定时发生了BINDING.JCA-12563异常。异常在调用JCA绑定时发生:"JCA绑定执行引用操作'insert‘由于: DBWriteInteractionSpec执行失败异常而失败。插入失败。描述符名称: GBE_INT_CSS_PQ_PQFFEFO.PqffefoProxy。由异常引起的: org.eclipse.persistence.exceptions.ConversionException异常描述:类java.lang.String的对象25-8-19无法转换为类java.sql.Timestamp。内部异常: BINDING.JCA-11635无法转换日期异常。无法将xml中的字符串值转换为java.sql.Date。即使数据库接受以多种格式表示日期的字符串,适配器也只接受以xml ISO日期格式表示日期的字符串。输入值必须为iso 8601日期格式YYYY DD.

EN

回答 1

Stack Overflow用户

发布于 2019-08-26 07:03:28

我假设输入数据

代码语言:javascript
运行
复制
<root>
    <input_date>2019-07-09-10.56.24.147431</input_date>
</root>

XSL:-

代码语言:javascript
运行
复制
<?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>

获得输出

2009年7月19日

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57651459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档