2015-02-23 130 views
0

我有一个日期格式为'12 -FEB-2014'我需要将其转换为'yyyy-mm-dd'格式。我尝试这样做:解析日期字符串

xdmp:parse-dateTime("[D01]-[MN,*-3]-[Y0001]","12-FEB-2014") 

但它抛出一个异常:

XDMP-PATTERNVALUEMISMATCH: Given value doesn't match with the specified pattern 
for parsing dateTime string 

回答

3

它看起来像你有你将不得不作出自己的转换函数的月份。下面的代码应该给你一个开始。它会消除你给我们的例子。

declare function local:month-name-to-int 
    ($stringIN as xs:string?) as xs:string? { 
    switch (fn:lower-case($stringIN)) 
    case "jan" return "01" 
    case "feb" return "02" 
    case "mar" return "03" 
    case "apr" return "04" 
    case "may" return "05" 
    case "jun" return "06" 
    case "jul" return "07" 
    case "aug" return "08" 
    case "sep" return "09" 
    case "oct" return "10" 
    case "nov" return "11" 
    case "dec" return "12" 
    default return fn:error(xs:QName("ERROR"), "unknown month") 
} ; 

let $string := "12-FEb-2014" 
let $stringTokened := fn:tokenize($string, "-") 
return xs:date($stringTokened[3] || "-"||local:month-name-to-int($stringTokened[2]) || "-" || $stringTokened[1]) 
+1

现在函数xdmp:解析-日期时间( “[D01] - [MN,* - 3] - [Y0001]”, “12-FEB-2014”)似乎GUD一起工作 – LSB 2016-06-28 10:22:01