2.2.13.3.1.4 Literal Predicate
The literal predicate MUST be true if a given property stands in a given relation to a given literal. The basic syntax is as follows:
-
…property operator literal…
The operator MUST be one of the following:
Operator |
Description |
---|---|
= |
equal to |
!= or <> |
not equal to |
> |
greater than |
>= |
greater or equal to |
< |
less than |
<= |
less than or equal to |
The literal is simply a value. The type of the value MUST match the type of the property. As a special case, properties that store dates can be compared to a time calculated from the current time. The function that does this is the DATEADD function.
The basic syntax for the DATEADD function is as follows:
-
DATEADD(unit, offset, time)
The time in the DATEADD function MUST be another DATEADD function or the GETGMTDATE function, which returns the current date and time. It MUST NOT be a date literal. The offset MUST be a negative integer that specifies how much time to add to the specified time. Because this integer MUST be negative, the DATEADD function actually performs a subtraction. Finally, the first parameter specifies the unit in which the second parameter is measured. Possible values are as follows:
YEAR
QUARTER
MONTH
WEEK
DAY
HOUR
MINUTE
SECOND
For example, the following predicate example:
-
…createdDate > DATEADD(YEAR, -1, GETGMTDATE())…
matches all items for which the createdDate property lies less than a year in the past.
-
literal-predicate = identifier *ws operator *ws value value = literal / dateadd-function literal = boolean / hex / decimal / float / string / date dateadd-function = "DATEADD" *ws "(" *ws dateadd-unit *ws "," *ws dateadd-offset *ws "," *ws dateadd-datetime *ws ")" dateadd-unit = "YEAR" / "QUARTER" / "MONTH" / "WEEK" / "DAY" / "HOUR" / "MINUTE" / "SECOND" dateadd-offset = negative-decimal / negative-hex dateadd-datetime = dateadd-function / "GETGMTDATE()"