gpt4 book ai didi

xquery - 使用 XQuery 将日期输入转换为特定格式的字符串值

转载 作者:行者123 更新时间:2023-12-02 09:37:14 27 4
gpt4 key购买 nike

我必须使用 xquery 以 DDMMYYYY 格式创建日期字符串。输入到我的 xquery 的日期将类似于“2004-05-02T00:00:00+01:00”。截至目前,我正在使用以下解决方案来获取所需的 fromat(02052004),

$dateString:= concat(substring($dateInput, 9, 2), substring($dateInput, 6, 2), substring($dateInput, 1, 4));

有没有其他方法或内置函数可以将日期转换为所需的字符串格式?

最佳答案

如果您可以访问 XQuery 3.0 ,您可以利用 format-dateTime($date, $picture) :

let $date := xs:dateTime("2004-05-02T00:00:00+01:00")
return format-dateTime($date, "[D,2][M,2][Y,4]")

如果您还没有(仅 XQuery 1.0 ),您仍然可以使用更语义化的版本。因为它也没有 format-number(...)函数,我正在使用 functx 中的一些准备好的函数:
declare namespace functx = "http://www.functx.com";
declare function functx:pad-integer-to-length
( $integerToPad as xs:anyAtomicType? ,
$length as xs:integer ) as xs:string {

if ($length < string-length(string($integerToPad)))
then error(xs:QName('functx:Integer_Longer_Than_Length'))
else concat
(functx:repeat-string(
'0',$length - string-length(string($integerToPad))),
string($integerToPad))
} ;

declare function functx:repeat-string
( $stringToRepeat as xs:string? ,
$count as xs:integer ) as xs:string {

string-join((for $i in 1 to $count return $stringToRepeat),
'')
} ;

let $date := xs:dateTime("2004-05-02T00:00:00+01:00")
let $date := xs:date($date)
return string-join((
functx:pad-integer-to-length(day-from-date($date), 2),
functx:pad-integer-to-length(month-from-date($date), 2),
functx:pad-integer-to-length(year-from-date($date), 4)
))

如果您更喜欢体积更大但语义化的版本或简单的字符串操作,请自行决定。请注意,时区可能会导致不同的结果,具体取决于您选择的时区。

关于xquery - 使用 XQuery 将日期输入转换为特定格式的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24364690/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com