[MarkLogic Dev General] Comparing Dates

Jonathan Cook jonathan.cook2 at bbc.co.uk
Fri Mar 9 07:36:22 PST 2012


Thanks, your xpath select doesn¹t work so I ended up with this:
let $results := /bbc:*[
    /bbc:*/bbc:itemMeta/bbc:assetTypeCode[text()=$asset_type_code] and
/bbc:*/bbc:itemMeta/bbc:lastPublished[text() >=
$asset_publication_date_start and text() < $asset_publication_date_end ]
    ]

I don¹t think it is particularly efficient

Thanks
Jon


On 09/03/2012 11:21, "Geert Josten" <geert.josten at dayon.nl> wrote:

> Hi Johnathan,
>  
> How about something like:
>  
> let $asset_type_code := "STY"
> let $asset_creation_date := "20111017"
> let $asset_creation_date_start := xs:dateTime(fn:replace($asset_creation_date,
> "^(\d{4})(\d{2})(\d{2})$", "$1-$2-$3T00:00:00"))
> let $asset_creation_date_end := $asset_creation_date_start +
> xs:dayTimeDuration("P1D")
> 
> 
> return
>     doc()[//assetTypeCode = $asset_type_code][//firstCreated >=
> $asset_creation_date_start][//firstCreated < $asset_creation_date_end]/*
> 
> 
> It might perform better though if you¹d rewrite to for instance:
>  
> cts:search(
>     doc(),
>     cts:and-query((
>         cts:element-value-query(xs:QName("assetTypeCode"), $asset_type_code),
>         cts:element-range-query(xs:QName("firstCreated"), ">=",
> $asset_creation_date_start),
>         cts:element-range-query(xs:QName("firstCreated"), "<",
> $asset_creation_date_end)
>     ))
> )/*
> 
> 
> This requires a few indexes though..
>  
> Kind regards,
> Geert
>  
> 
> Van: general-bounces at developer.marklogic.com
> [mailto:general-bounces at developer.marklogic.com] Namens Jonathan Cook
> Verzonden: donderdag 8 maart 2012 17:59
> Aan: MarkLogic Developer Discussion
> Onderwerp: [MarkLogic Dev General] Comparing Dates
>  
> Hi,
> 
> I wondered what the best way to compare dates using mark logic xquery was?
> 
> My query looks like this at the moment:
> 
> import module namespace xinc = "http://marklogic.com/xinclude" at
> "/MarkLogic/xinclude/xinclude.xqy";
> 
> let $asset_type_code := "STY"
> let $asset_creation_date := "20111017"
> 
> let $results := /*[
>     /*/itemMeta/assetTypeCode[text()=$asset_type_code] and
> /*/itemMeta/firstCreated[text()='2011-10-17T14:47:52+00:00']
>     ]
> 
> return $results
> 
> However what I would like to do is use the $asset_creation_date variable which
> would be of format yyyyMMdd and see if it equals the first part of the
> firstCreated element which is in a different format as above? There doesn¹t
> seem to be many date time functions and also I¹m not sure if I¹m going about
> this slightly the wrong way or if I would have to do it in a second FLOWR
> statement using some string comparison?
> 
> Thanks
> Jon 
> 
>  
> 
> http://www.bbc.co.uk
> This e-mail (and any attachments) is confidential and may contain personal
> views which are not the views of the BBC unless specifically stated.
> If you have received it in error, please delete it from your system.
> Do not use, copy or disclose the information in any way nor act in reliance on
> it and notify the sender immediately.
> Please note that the BBC monitors e-mails sent or received.
> Further communication will signify your consent to this.
> 
> 
> _______________________________________________
> General mailing list
> General at developer.marklogic.com
> http://developer.marklogic.com/mailman/listinfo/general


http://www.bbc.co.uk/
This e-mail (and any attachments) is confidential and may contain personal views which are not the views of the BBC unless specifically stated.
If you have received it in error, please delete it from your system.
Do not use, copy or disclose the information in any way nor act in reliance on it and notify the sender immediately.
Please note that the BBC monitors e-mails sent or received.
Further communication will signify your consent to this.
					
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://developer.marklogic.com/pipermail/general/attachments/20120309/c65c60ac/attachment.html 


More information about the General mailing list