获取Marklogic中所选日期的第一天和最后一天的日期

问题描述 投票:2回答:1

我想使用MarkLogic获取任何选定日期的第一天和最后一天的日期。 例:

let $date := xs:date("2018-08-24")      
let $firstDay := "*Should be 1st day of month - of $date*"  
let $lastDay := "*Should be last day of month - of $date*"  
return ("$firstDay:",$firstDay,"$lastDay:",$lastDay)

预计输出日期:

  • $firstDay: 2018-08-01
  • $lastDay: 2018-08-31

我可以使用functx获取此日期:第一天($ date)和functx:last-day-of-month($ date)但我想知道是否有任何API或替代选项由MarkLogic

date xquery marklogic marklogic-8
1个回答
2
投票

您可以使用标准XQuery duration arithmetic直接计算:

let $date := xs:date("2018-08-24")

let $one-day := xs:dayTimeDuration('P1D')
let $one-month := xs:yearMonthDuration('P1M')
(: subtract days to get to the 1st of the month :)
let $firstDay := $date - (fn:day-from-date($date) - 1) * $one-day
(: get the 1st of the next month and then subtract one day :)
let $lastDay  := $firstDay + $one-month - $one-day

return ("$firstDay:",$firstDay,"$lastDay:",$lastDay)
© www.soinside.com 2019 - 2024. All rights reserved.