In version 21.3 we introduce a new field (definition) type EDTFField whose content corresponds with the metadata standard EDTF specifically for the fully supported levels 0 and 1. Since 23.1, level 2 COMPLETELY_UNSPECIFIED is also supported. The validity of these dates is checked both in front-ends and APIs. Each EDTF date corresponds with an interval, for example 2021-04-XX corresponds to the entire month of April 2021.
Indexation
Each EDTF date corresponds with an interval in time. An EDTF field can be searched as follows
By specifying a point in time → +MyDateField:"1985-04-01T00:00:00"
Will search for all dates on the April 1st 1985 at midnight
By specifying a date range → +MyDateField:[1985-04-01 TO 1986-23]
Will search for all dates from April 1st 1985 until the end of Autumn 1986.
By specifying an EDTF date → +MyDateField:"2014/2015-06"
Will search for all dates from the start of 2014 until the end of June 2015.
Literal or textual searches on EDTF dates are not supported
e.g. +MyDateField:20*
+MyDateField:2014 matches not only with 2014 but also with 2014-XX, 2014-03-25T12:32:15, 2010/2030 etc
Overview
The tables below shows the supported EDTF features. The interval associated with the EDTF date, does not include the end, which technically means it is half open: [Left,Right[
Level 0
Name
Example
Left
Right (open)
Name
Example
Left
Right (open)
DATE_COMPLETE
1985-04-12
1985-04-12T00:00:00
1985-04-13T00:00:00
DATE_PRECISION_YEAR_AND_MONTH
1985-04
1985-04-01T00:00:00
1985-05-01T00:00:00
DATE_PRECISION_YEAR
1985
1985-01-01T00:00:00
1986-01-01T00:00:00
DATETIME_COMPLETE
1985-04-12T23:20:30
1985-04-12T23:20:30
1985-04-12T23:20:31
DATETIME_COMPLETE_UTC
1985-04-12T23:20:30Z
1985-04-12T23:20:30Z
1985-04-12T23:20:31Z
DATETIME_COMPLETE_SHIFT
1985-04-12T23:20:30+04:30
1985-04-12T23:20:30+04:30
1985-04-12T23:20:31+04:30
TIME_INTERVAL
2 DATE_* separated by /
1985-04/1986
1985-04-01T00:00:00
1987-01-01T00:00:00
Level 1
Name
Sub Level
Example
Left
Right (open)
Name
Sub Level
Example
Left
Right (open)
LETTER_PREFIXED_YEAR
Y170000002
170000002-01-01T00:00:00
170000003-01-01T00:00:00
SEASONS The values 21, 22, 23, 24 may be used used to signify Meteorological season
Spring: 21 = 01/03 → 01/06
Summer: 22 = 01/06 → 01/09
Autumn: 23 = 01/09 → 01/12
Winter: 24 = 01/12 → 01/03
1985-21
1985-03-01T00:00:00
1985-06-01T00:00:00
DATE_QUALIFICATION_UNCERTAIN
DATE_* plus ?
? uncertain
1985-04?
1985-04-01T00:00:00
1985-05-01T00:00:00
DATE_QUALIFICATION_APPROXIMATE DATE_* plus ?
~ approximate
1985-04~
1985-04-01T00:00:00
1985-05-01T00:00:00
DATE_QUALIFICATION_UNCERTAIN_APPROXIMATE
DATE_* plus ?
% uncertain and approximate
1985-04%
1985-04-01T00:00:00
1985-05-01T00:00:00
UNSPECIFIED_DIGIT_FROM_THE_RIGHT
DECADE
198X
1980-01-01T00:00:00
1990-01-01T00:00:00
UNSPECIFIED_DIGIT_FROM_THE_RIGHT
CENTURY
19XX
1900-01-01T00:00:00
2000-01-01T00:00:00
UNSPECIFIED_DIGIT_FROM_THE_RIGHT
MONTH
1985-XX
1985-01-01T00:00:00
1986-01-01T00:00:00
UNSPECIFIED_DIGIT_FROM_THE_RIGHT
DAY_IN_YEAR
1985-XX-XX
1985-01-01T00:00:00
1986-01-01T00:00:00
UNSPECIFIED_DIGIT_FROM_THE_RIGHT
DAY_IN_MONTH
1985-04-XX
1985-04-01T00:00:00
1985-05-01T00:00:00
EXTENDED_INTERVAL
OPEN_END
1985-04-12/..
1985-04-12T00:00:00
*
EXTENDED_INTERVAL
OPEN_BEGIN
../1985-04-12
*
1985-04-12T00:00:00
EXTENDED_INTERVAL
UNKNOWN_END
1985-04-12/
1985-04-12T00:00:00
*
EXTENDED_INTERVAL
UNKNOWN_BEGIN
/1985-04-12
*
1985-04-12T00:00:00
EXTENDED_INTERVAL with 1 or 2 of the dates being a DATE_QUALIFICATION
1985-04%/1986
1985-04-01T00:00:00
1986-01-01T00:00:00
NEGATIVE_CALENDER_YEAR
-0750
-0750-01-01T00:00:00
-0749-01-01T00:00:00
Level 2 (future release, >= 23.1)
Name
Sub Level
Example
Left
Right
Name
Sub Level
Example
Left
Right
UNSPECIFIED
EONS
XXXX-04
X750-03-1X
0001-04-01T00:00:00
0750-03-10T00:00:00
9999-04-01T00:00:00
9750-03-20T00:00:00
UNSPECIFIED
MILLENIUM
1XXX-04
1XXX-08-XX
1000-04-01T00:00:00
1000-08-01T00:00:00
1999-05-01T00:00:00
1999-09-01T00:00:00
UNSPECIFIED
CENTURY
18XX-07
18XX-07-X3
1800-07-01T00:00:00
1800-07-03T00:00:00
1899-08-01T00:00:00
1899-07-24T00:00:00
UNSPECIFIED
DECADE
181X-07
181X-07-X3
1810-07-01T00:00:00
1810-07-03T00:00:00
1819-08-01T00:00:00
1819-07-24T00:00:00
UNSPECIFIED
YEAR
1812-X7
1812-XX-X3
1812-07-01T00:00:00
1812-01-03T00:00:00
1812-08-01T00:00:00
1812-12-24T00:00:00
UNSPECIFIED
SEMESTERS
1812-1X
1812-0X-X3
1812-10-01T00:00:00
1812-01-03T00:00:00
1813-01-01T00:00:00
1812-09-24T00:00:00
UNSPECIFIED
MONTH
1812-02-X2
1812-02-X9
1812-02-01T00:00:00
1812-02-01T00:00:00
1812-03-01T00:00:00
1812-03-01T00:00:00
UNSPECIFIED
SUB_MONTH
1812-02-2X
1812-02-1X
1812-02-20T00:00:00
1812-02-10T00:00:00
1812-03-01T00:00:00
1812-02-20T00:00:00
COMPLETELY_UNSPECIFIED (since 23.1)
XXXX-XX-XX
0001-01-01T00:00:00
10000-01-01T00:00:00
Notes
For INTERVAL and EXTENDED_INTERNAL the following rule applies START.left <= END.left
When no time zone is specified the time zone of the installation is used, which is the Brussels time zone.
INTERVAL only allows for DATE_* not for DATETIME_*
Note that year must have at least 4 digits, e.g. -750 is not allowed
Due to limitations of the underlying search engine, searching on negative years is not possible
Indexed searching on a range of intervals, e.g. XXXX-12-XX (every December during 10000 years), is technically not possible, hence the range simplified to the interval determined by the left-most X (e.g. X123 = 10000 years, 1X34 = 1000 years, 15X9 = 100 years, etc).