diff --git a/asterix-app/data/temporal/simpletemp_30.json b/asterix-app/data/temporal/simpletemp_30.json
index dcc9d8c..fe3406a 100644
--- a/asterix-app/data/temporal/simpletemp_30.json
+++ b/asterix-app/data/temporal/simpletemp_30.json
@@ -1,3 +1,3 @@
-{ "date": date("4619-11-23"), "time": time("14:29:36.786Z"), "datetime": datetime("2749-01-27T17:27:30.020Z"), "duration": duration("-P474133Y7M854630DT4H40M6.45S"), "year-month-duration": year-month-duration("P193989Y3M"), "day-time-duration": day-time-duration("P4477686DT4H49M31.87S"), "date-interval": interval-date("-9537-08-04, 9656-06-03"), "time-interval": interval-time("12:04:45.689Z, 12:41:59.002Z"), "datetime-interval": interval-datetime("-2640-10-11T17:32:15.675Z, 4104-02-01T05:59:11.902Z") }
-{ "date": date("-9971-09-24"), "time": time("11:38:17.154Z"), "datetime": datetime("1259-11-13T09:49:11.852Z"), "duration": duration("P473653Y9M4566143DT10H20M53.61S"), "year-month-duration": year-month-duration("P148233Y10M"), "day-time-duration": day-time-duration("-P7236357DT2H56M56.164S"), "date-interval": interval-date("-0255-09-06, 4925-05-03"), "time-interval": interval-time("12:10:45.169Z, 15:37:48.736Z"), "datetime-interval": interval-datetime("0534-12-08T08:20:31.487Z, 6778-02-16T22:40:21.653Z") }
-{ "date": date("7986-11-25"), "time": time("12:49:39.736Z"), "datetime": datetime("-8337-01-30T15:23:07.598Z"), "duration": duration("-P184484Y7M2241423DT10H42M49.500S"), "year-month-duration": year-month-duration("-P546031Y3M"), "day-time-duration": day-time-duration("P2623386DT10H32M31.983S"), "date-interval": interval-date("-4514-05-24, 3337-08-26"), "time-interval": interval-time("04:16:42.321Z, 12:22:56.816Z"), "datetime-interval": interval-datetime("2129-12-12T13:18:35.758Z, 8647-07-01T13:10:19.691Z") }
+{ "date": date("4619-11-23"), "time": time("14:29:36.786Z"), "datetime": datetime("2749-01-27T17:27:30.020Z"), "duration": duration("-P474133Y7M854630DT4H40M6.45S"), "year-month-duration": year-month-duration("P193989Y3M"), "day-time-duration": day-time-duration("P4477686DT4H49M31.87S"), "date-interval": interval(date("-9537-08-04"), date("9656-06-03")), "time-interval": interval(time("12:04:45.689Z"), time("12:41:59.002Z")), "datetime-interval": interval(datetime("-2640-10-11T17:32:15.675Z"), datetime("4104-02-01T05:59:11.902Z")) }
+{ "date": date("-9971-09-24"), "time": time("11:38:17.154Z"), "datetime": datetime("1259-11-13T09:49:11.852Z"), "duration": duration("P473653Y9M4566143DT10H20M53.61S"), "year-month-duration": year-month-duration("P148233Y10M"), "day-time-duration": day-time-duration("-P7236357DT2H56M56.164S"), "date-interval": interval(date("-0255-09-06"), date("4925-05-03")), "time-interval": interval(time("12:10:45.169Z"), time("15:37:48.736Z")), "datetime-interval": interval(datetime("0534-12-08T08:20:31.487Z"), datetime("6778-02-16T22:40:21.653Z")) }
+{ "date": date("7986-11-25"), "time": time("12:49:39.736Z"), "datetime": datetime("-8337-01-30T15:23:07.598Z"), "duration": duration("-P184484Y7M2241423DT10H42M49.500S"), "year-month-duration": year-month-duration("-P546031Y3M"), "day-time-duration": day-time-duration("P2623386DT10H32M31.983S"), "date-interval": interval(date("-4514-05-24"), date("3337-08-26")), "time-interval": interval(time("04:16:42.321Z"), time("12:22:56.816Z")), "datetime-interval": interval(datetime("2129-12-12T13:18:35.758Z"), datetime("8647-07-01T13:10:19.691Z")) }
\ No newline at end of file
diff --git a/asterix-app/data/temporal/temporalData.json b/asterix-app/data/temporal/temporalData.json
index bedf2c7..6d662f9 100644
--- a/asterix-app/data/temporal/temporalData.json
+++ b/asterix-app/data/temporal/temporalData.json
@@ -1,4 +1,4 @@
-{"id": "001", "dateField": date("-2012-12-12"), "dateFieldPlus": date("0990-01-01"), "timeField": time("23:49:12.39Z"), "timeFieldPlus": time("03:23:12.2"), "datetimeField": datetime("2012-12-12T00:00:00.001"), "datetimeFieldPlus": datetime("-00130810T221015398"), "durationField": duration("P20Y19DT3H74M23.34S"), "durationFieldPlus": duration("-P2MT4M300.68S"), "intervalField": interval-datetime("2012-12-12T00:00:00.001,20130810T221015398") }
-{"id": "002", "timeField": time("12:12:12.219+08:00"), "timeField2": time("13:13:13.321-08:00"), "datetimeField": datetime("19201220T232918478-1200"), "intervalField": interval-time("12:29:30+08:00, 235959999-0800") }
-{"id": "003", "durationField": duration("-P27Y48DT2400H"), "datetimeField": datetime("-0290-03-23T00:59:48.999+07:00"), "intervalField": interval-date("-2012-03-17, 2013-04-01"), "intervalPlus": interval-time("19:23:32.328Z,23:20:20") }
+{"id": "001", "dateField": date("-2012-12-12"), "dateFieldPlus": date("0990-01-01"), "timeField": time("23:49:12.39Z"), "timeFieldPlus": time("03:23:12.2"), "datetimeField": datetime("2012-12-12T00:00:00.001"), "datetimeFieldPlus": datetime("-00130810T221015398"), "durationField": duration("P20Y19DT3H74M23.34S"), "durationFieldPlus": duration("-P2MT4M300.68S"), "intervalField": interval(datetime("2012-12-12T00:00:00.001"),datetime("20130810T221015398")) }
+{"id": "002", "timeField": time("12:12:12.219+08:00"), "timeField2": time("13:13:13.321-08:00"), "datetimeField": datetime("19201220T232918478-1200"), "intervalField": interval(time("12:29:30+08:00"), time("235959999-0800")) }
+{"id": "003", "durationField": duration("-P27Y48DT2400H"), "datetimeField": datetime("-0290-03-23T00:59:48.999+07:00"), "intervalField": interval(date("-2012-03-17"), date("2013-04-01")), "intervalPlus": interval(time("19:23:32.328Z"), time("23:20:20")) }
 {"id": "003", "dayTimeDurationField": day-time-duration("-P48DT2400H"), "yearMonthDurationField": year-month-duration("P27Y50M") }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.3.query.aql
index 8ccca18..23b820c 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.3.query.aql
@@ -18,13 +18,13 @@
  */
 use dataverse test;
 
-let $id1 := interval-from-date("2002-01-01", "2003-01-01")
-let $id2 := interval-from-date("2006-01-01", "2010-01-01")
-let $id3 := interval-from-date("2001-01-01", "2010-01-01")
-let $id4 := interval-from-date("2003-01-01", "2008-01-01")
-let $id5 := interval-from-date("2002-01-01", "2010-01-01")
-let $id6 := interval-from-date("2004-01-01", "2009-01-01")
-let $id7 := interval-from-date("2003-01-01", "2008-01-01")
+let $id1 := interval(date("2002-01-01"), date("2003-01-01"))
+let $id2 := interval(date("2006-01-01"), date("2010-01-01"))
+let $id3 := interval(date("2001-01-01"), date("2010-01-01"))
+let $id4 := interval(date("2003-01-01"), date("2008-01-01"))
+let $id5 := interval(date("2002-01-01"), date("2010-01-01"))
+let $id6 := interval(date("2004-01-01"), date("2009-01-01"))
+let $id7 := interval(date("2003-01-01"), date("2008-01-01"))
 
 for $id in [$id1, $id2, $id3, $id4, $id5, $id6, $id7]
 order by $id
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.4.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.4.query.aql
index e0d9410..b16313e 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.4.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/interval_order/interval_order.4.query.aql
@@ -18,13 +18,13 @@
  */
 use dataverse test;
 
-let $id1 := interval-from-date("2002-01-01", "2003-01-01")
-let $id2 := interval-from-date("2006-01-01", "2010-01-01")
-let $id3 := interval-from-date("2001-01-01", "2010-01-01")
-let $id4 := interval-from-date("2003-01-01", "2008-01-01")
-let $id5 := interval-from-date("2002-01-01", "2010-01-01")
-let $id6 := interval-from-date("2004-01-01", "2009-01-01")
-let $id7 := interval-from-date("2003-01-01", "2008-01-01")
+let $id1 := interval(date("2002-01-01"), date("2003-01-01"))
+let $id2 := interval(date("2006-01-01"), date("2010-01-01"))
+let $id3 := interval(date("2001-01-01"), date("2010-01-01"))
+let $id4 := interval(date("2003-01-01"), date("2008-01-01"))
+let $id5 := interval(date("2002-01-01"), date("2010-01-01"))
+let $id6 := interval(date("2004-01-01"), date("2009-01-01"))
+let $id7 := interval(date("2003-01-01"), date("2008-01-01"))
 
 for $id in [$id1, $id2, $id3, $id4, $id5, $id6, $id7]
 order by $id desc
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_equality/issue363_equality.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_equality/issue363_equality.3.query.aql
index 037ce47..b6564eb 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_equality/issue363_equality.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_equality/issue363_equality.3.query.aql
@@ -31,7 +31,7 @@
 let $v6 := polygon("-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75")
 let $v7 := circle("0.1234,-1.00e-10 +10.5E-2")
 let $v8 := rectangle("0.1234,-1.00e-10 5.5487,0.48765")
-let $v9 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
+let $v9 := interval(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
 let $dv1 := duration("P3Y6M3DT9H5M2.348S")
 let $dv2 := year-month-duration("P3Y6M")
 let $dv3 := day-time-duration("P3DT9H5M2.348S")
@@ -40,7 +40,7 @@
 let $dv6 := polygon("-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75")
 let $dv7 := circle("0.1234,-1.00e-10 +10.5E-2")
 let $dv8 := rectangle("0.1234,-1.00e-10 5.5487,0.48765")
-let $dv9 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
+let $dv9 := interval(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
 let $ndv1 := duration("P4Y6M3DT9H5M2.348S")
 let $ndv2 := year-month-duration("P3Y7M")
 let $ndv3 := day-time-duration("P3DT1H5M2.348S")
@@ -49,22 +49,22 @@
 let $ndv6 := polygon("-1.0,+10.5e2 -02.19E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75")
 let $ndv7 := circle("0.5678,-1.00e-10 +10.5E-2")
 let $ndv8 := rectangle("0.5678,-1.00e-10 5.5487,0.48765")
-let $ndv9 := interval-from-datetime(datetime("-1983-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
+let $ndv9 := interval(datetime("-1983-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
 
-return { "duration":  $v1 = $dv1, 
-"year-month-duration":  $v2 = $dv2, 
-"day-time-duration":  $v3 = $dv3, 
-"point": $v4 = $dv4, 
-"line": $v5 = $dv5, 
+return { "duration":  $v1 = $dv1,
+"year-month-duration":  $v2 = $dv2,
+"day-time-duration":  $v3 = $dv3,
+"point": $v4 = $dv4,
+"line": $v5 = $dv5,
 "polygon": $v6 = $dv6,
 "circle": $v7 = $dv7,
 "rectangle": $v8 = $dv8,
 "interval": $v9 = $dv9,
-"duration2":  $v1 != $ndv1, 
-"year-month-duration2": $v2 != $ndv2, 
-"day-time-duration2":  $v3 != $ndv3, 
-"point2": $v4 != $ndv4, 
-"line2": $v5 != $ndv5, 
+"duration2":  $v1 != $ndv1,
+"year-month-duration2": $v2 != $ndv2,
+"day-time-duration2":  $v3 != $ndv3,
+"point2": $v4 != $ndv4,
+"line2": $v5 != $ndv5,
 "polygon2": $v6 != $ndv6,
 "circle2": $v7 != $ndv7,
 "rectangle2": $v8 != $ndv8,
diff --git a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql
index bf20a2f..9d1a868 100644
--- a/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.aql
@@ -22,8 +22,8 @@
  * Date         : 9 May 2013
  * Issue        : 363
  */
- 
-let $v1 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
-let $dv1 := interval-from-datetime(datetime("-1983-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
+
+let $v1 := interval(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
+let $dv1 := interval(datetime("-1983-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
 
 return { "interval0":  $v1 > $dv1, "interval1": $dv1 < $v1, "interval2":  $v1 >= $dv1, "interval3": $dv1 <= $v1 }
diff --git a/asterix-app/src/test/resources/runtimets/queries/constructor/interval/interval.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/constructor/interval/interval.3.query.aql
index 2e1b6f6..b5eb998 100644
--- a/asterix-app/src/test/resources/runtimets/queries/constructor/interval/interval.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/constructor/interval/interval.3.query.aql
@@ -19,24 +19,6 @@
 
 use dataverse test;
 
-let $itv11 := interval-from-date(date("2010-10-30"), date("2012-10-21"))
-let $itv12 := interval-from-date("2010-10-30", date("2012-10-21"))
-let $itv13 := interval-from-date(date("2010-10-30"), "2012-10-21")
-let $itv14 := interval-from-date("2010-10-30", "2012-10-21")
-let $itv15 := interval-from-date(null, "2012-10-21")
-let $itv16 := interval-from-date("2010-10-30", null)
-let $itv21 := interval-from-time(time("03:04:05.678-11:00"), time("232425267+0200"))
-let $itv22 := interval-from-time("03:04:05.678-11:00", time("232425267+0200"))
-let $itv23 := interval-from-time(time("03:04:05.678-11:00"), "232425267+0200")
-let $itv24 := interval-from-time("03:04:05.678-11:00", "232425267+0200")
-let $itv25 := interval-from-time(null, time("232425267+0200"))
-let $itv26 := interval-from-time(time("03:04:05.678-11:00"), null)
-let $itv31 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
-let $itv32 := interval-from-datetime("-1987-11-19T02:43:57.938+08:00", datetime("19991112T124935948-0700"))
-let $itv33 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), "19991112T124935948-0700")
-let $itv34 := interval-from-datetime("-1987-11-19T02:43:57.938+08:00", "19991112T124935948-0700")
-let $itv35 := interval-from-datetime(null, datetime("19991112T124935948-0700"))
-let $itv36 := interval-from-datetime(datetime("-1987-11-19T02:43:57.938+08:00"), null)
 let $itv41 := interval-start-from-date(date("0001-12-27"), duration("P3Y394DT48H398.483S"))
 let $itv42 := interval-start-from-date("0001-12-27", duration("P3Y394DT48H398.483S"))
 let $itv43 := interval-start-from-date(date("0001-12-27"), "P3Y394DT48H398.483S")
@@ -55,6 +37,15 @@
 let $itv64 := interval-start-from-datetime("-2043-11-19T15:32:39.293", "P439Y3M20DT20H39M58.949S")
 let $itv65 := interval-start-from-datetime(null, duration("P439Y3M20DT20H39M58.949S"))
 let $itv66 := interval-start-from-datetime(datetime("-2043-11-19T15:32:39.293"), null)
+let $itv71 := interval(date("2010-10-30"), date("2012-10-21"))
+let $itv72 := interval(null, date("2012-10-21"))
+let $itv73 := interval(date("2010-10-30"), null)
+let $itv74 := interval(time("03:04:05.678-11:00"), time("232425267+0200"))
+let $itv75 := interval(null, time("232425267+0200"))
+let $itv76 := interval(time("03:04:05.678-11:00"), null)
+let $itv77 := interval(datetime("-1987-11-19T02:43:57.938+08:00"), datetime("19991112T124935948-0700"))
+let $itv78 := interval(null, datetime("19991112T124935948-0700"))
+let $itv79 := interval(datetime("-1987-11-19T02:43:57.938+08:00"), null)
 
-return {"interval11": $itv11, "interval12": $itv12, "interval13": $itv13, "interval14": $itv14, "interval15": $itv15, "interval16": $itv16, "interval21": $itv21, "interval22": $itv22, "interval23": $itv23, "interval24": $itv24, "interval25": $itv25, "interval26": $itv26, "interval31": $itv31, "interval32": $itv32, "interval33": $itv33, "interval34": $itv34, "interval35": $itv35, "interval36": $itv36, "interval41": $itv41, "interval42": $itv42, "interval43": $itv43, "interval44": $itv44, "interval45": $itv45, "interval46": $itv46, "interval51": $itv51, "interval52": $itv52, "interval53": $itv53, "interval54": $itv54, "interval55": $itv55, "interval56": $itv56, "interval61": $itv61, "interval62": $itv62, "interval63": $itv63, "interval64": $itv64, "interval65": $itv65, "interval66": $itv66}
+return {"interval41": $itv41, "interval42": $itv42, "interval43": $itv43, "interval44": $itv44, "interval45": $itv45, "interval46": $itv46, "interval51": $itv51, "interval52": $itv52, "interval53": $itv53, "interval54": $itv54, "interval55": $itv55, "interval56": $itv56, "interval61": $itv61, "interval62": $itv62, "interval63": $itv63, "interval64": $itv64, "interval65": $itv65, "interval66": $itv66, "interval71": $itv71, "interval72": $itv72, "interval73": $itv73, "interval74": $itv74, "interval75": $itv75, "interval76": $itv76, "interval77": $itv77, "interval78": $itv78, "interval79": $itv79}
 
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/accessors_interval/accessors_interval.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/accessors_interval/accessors_interval.3.query.aql
index 78e97d9..7f9101e 100644
--- a/asterix-app/src/test/resources/runtimets/queries/temporal/accessors_interval/accessors_interval.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/accessors_interval/accessors_interval.3.query.aql
@@ -18,8 +18,8 @@
  */
 use dataverse test;
 
-let $interval1 := interval-from-date(date("2010-10-30"), "2013-04-01")
-let $interval2 := interval-from-time("08:09:10.234Z", time("203040567+0800"))
-let $interval3 := interval-from-datetime("2009-09-01T00:00:00.000+08:00", datetime-from-date-time(date("2013-04-04"), time("00:00:00.000+08:00")))
+let $interval1 := interval(date("2010-10-30"), date("2013-04-01"))
+let $interval2 := interval(time("08:09:10.234Z"), time("203040567+0800"))
+let $interval3 := interval(datetime("2009-09-01T00:00:00.000+08:00"), datetime-from-date-time(date("2013-04-04"), time("00:00:00.000+08:00")))
 
 return {"start1": get-interval-start($interval1), "end1": get-interval-end($interval1), "start2": get-interval-start($interval2), "end2": get-interval-end($interval2), "start3": get-interval-start($interval3), "end3": get-interval-end($interval3) }
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.3.query.aql
index 9b51407..e080b49 100644
--- a/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/duration_functions/duration_functions.3.query.aql
@@ -24,9 +24,9 @@
 
 use dataverse test;
 
-let $itv1 := interval-from-date("2010-10-30", "2010-12-21")
-let $itv2 := interval-from-datetime("2012-06-26T01:01:01.111", "2012-07-27T02:02:02.222")
-let $itv3 := interval-from-time("12:32:38", "20:29:20")
+let $itv1 := interval(date("2010-10-30"), date("2010-12-21"))
+let $itv2 := interval(datetime("2012-06-26T01:01:01.111"), datetime("2012-07-27T02:02:02.222"))
+let $itv3 := interval(time("12:32:38"), time("20:29:20"))
 
 return { "dr1" : duration-from-interval($itv1),
          "dr2" : duration-from-interval($itv2),
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.3.query.aql
index bc410ca..57afc1d 100644
--- a/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/get_overlapping_interval/get_overlapping_interval.3.query.aql
@@ -21,9 +21,9 @@
  * Expected result: success
  **/
 
-{ "overlap1": get-overlapping-interval(interval-from-time(time("11:23:39"), time("18:27:19")), interval-from-time(time("12:23:39"), time("23:18:00"))), 
-  "overlap2": get-overlapping-interval(interval-from-time(time("12:23:39"), time("18:27:19")), interval-from-time(time("07:19:39"), time("09:18:00"))),
-  "overlap3": get-overlapping-interval(interval-from-date(date("1980-11-30"), date("1999-09-09")), interval-from-date(date("2013-01-01"), date("2014-01-01"))),
-  "overlap4": get-overlapping-interval(interval-from-date(date("1980-11-30"), date("2099-09-09")), interval-from-date(date("2013-01-01"), date("2014-01-01"))),
-  "overlap5": get-overlapping-interval(interval-from-datetime(datetime("1844-03-03T11:19:39"), datetime("2000-10-30T18:27:19")), interval-from-datetime(datetime("1989-03-04T12:23:39"), datetime("2009-10-10T23:18:00"))),
-  "overlap6": get-overlapping-interval(interval-from-datetime(datetime("1989-03-04T12:23:39"), datetime("2000-10-30T18:27:19")), interval-from-datetime(datetime("1844-03-03T11:19:39"), datetime("1888-10-10T23:18:00")))  }
+{ "overlap1": get-overlapping-interval(interval(time("11:23:39"), time("18:27:19")), interval(time("12:23:39"), time("23:18:00"))),
+  "overlap2": get-overlapping-interval(interval(time("12:23:39"), time("18:27:19")), interval(time("07:19:39"), time("09:18:00"))),
+  "overlap3": get-overlapping-interval(interval(date("1980-11-30"), date("1999-09-09")), interval(date("2013-01-01"), date("2014-01-01"))),
+  "overlap4": get-overlapping-interval(interval(date("1980-11-30"), date("2099-09-09")), interval(date("2013-01-01"), date("2014-01-01"))),
+  "overlap5": get-overlapping-interval(interval(datetime("1844-03-03T11:19:39"), datetime("2000-10-30T18:27:19")), interval(datetime("1989-03-04T12:23:39"), datetime("2009-10-10T23:18:00"))),
+  "overlap6": get-overlapping-interval(interval(datetime("1989-03-04T12:23:39"), datetime("2000-10-30T18:27:19")), interval(datetime("1844-03-03T11:19:39"), datetime("1888-10-10T23:18:00")))  }
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/interval_functions/interval_functions.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/interval_functions/interval_functions.3.query.aql
index d986a1e..62ed6a9 100644
--- a/asterix-app/src/test/resources/runtimets/queries/temporal/interval_functions/interval_functions.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/interval_functions/interval_functions.3.query.aql
@@ -18,25 +18,25 @@
  */
 use dataverse test;
 
-let $itv1 := interval-from-date("2010-10-30", "2010-12-21")
-let $itv2 := interval-from-date("2011-10-30", "2012-10-21")
-let $itv3 := interval-from-date("2010-12-21", "2013-01-01")
+let $itv1 := interval(date("2010-10-30"), date("2010-12-21"))
+let $itv2 := interval(date("2011-10-30"), date("2012-10-21"))
+let $itv3 := interval(date("2010-12-21"), date("2013-01-01"))
 let $blnBefore1 := interval-before($itv1, $itv2)
 let $blnAfter1 := interval-after($itv2, $itv1)
 let $blnBefore2 := interval-before($itv1, $itv3)
 let $blnAfter2 := interval-after($itv3, $itv1)
 
-let $itv4 := interval-from-datetime("2012-06-26T01:01:01.111", "2012-07-27T02:02:02.222")
-let $itv5 := interval-from-datetime("20120727T020202222", "2013-08-08T03:03:03.333")
-let $itv6 := interval-from-datetime("19000707T020202222", "2013-08-07T03:03:03.333")
+let $itv4 := interval(datetime("2012-06-26T01:01:01.111"), datetime("2012-07-27T02:02:02.222"))
+let $itv5 := interval(datetime("20120727T020202222"), datetime("2013-08-08T03:03:03.333"))
+let $itv6 := interval(datetime("19000707T020202222"), datetime("2013-08-07T03:03:03.333"))
 let $blnMeet1 := interval-meets($itv4, $itv5)
 let $blnMetBy1 := interval-met-by($itv5, $itv4)
 let $blnMeet2 := interval-meets($itv6, $itv4)
 let $blnMetBy2 := interval-met-by($itv6, $itv4)
 
-let $itv7 := interval-from-time("12:32:38", "20:29:20")
-let $itv8 := interval-from-time("17:48:19", "22:19:49")
-let $itv9 := interval-from-time("01:32:49", "17:48:19")
+let $itv7 := interval(time("12:32:38"), time("20:29:20"))
+let $itv8 := interval(time("17:48:19"), time("22:19:49"))
+let $itv9 := interval(time("01:32:49"), time("17:48:19"))
 let $blnOverlaps1 := interval-overlaps($itv7, $itv8)
 let $blnOverlapped1 := interval-overlapped-by($itv8, $itv7)
 let $blnOverlaps2 := interval-overlaps($itv9, $itv8)
@@ -44,21 +44,21 @@
 let $blnOverlap1 := interval-overlapping($itv9, $itv7)
 let $blnOverlap2 := interval-overlapping($itv9, $itv8)
 
-let $itv10 := interval-from-date("2010-10-30", "2010-11-30")
+let $itv10 := interval(date("2010-10-30"), date("2010-11-30"))
 let $blnStarts1 := interval-starts($itv10, $itv1)
 let $blnStarts2 := interval-starts($itv10, $itv2)
 let $blnStartedBy1 := interval-started-by($itv1, $itv10)
 let $blnStartedBy2 := interval-started-by($itv10, $itv2)
 
-let $itv10 := interval-from-datetime("19000707T020202222", "2013-08-07T03:03:03.333")
-let $itv11 := interval-from-datetime("19990707T020202222", "2013-08-07T03:03:03.333")
-let $itv12 := interval-from-datetime("-19990707T020202222", "2013-08-07T03:03:03.333")
+let $itv10 := interval(datetime("19000707T020202222"), datetime("2013-08-07T03:03:03.333"))
+let $itv11 := interval(datetime("19990707T020202222"), datetime("2013-08-07T03:03:03.333"))
+let $itv12 := interval(datetime("-19990707T020202222"), datetime("2013-08-07T03:03:03.333"))
 let $blnCovers1 := interval-covers($itv10, $itv11)
 let $blnCovers2 := interval-covers($itv10, $itv12)
 let $blnCoveredBy1 := interval-covered-by($itv11, $itv10)
 let $blnCoveredBy2 := interval-covered-by($itv12, $itv10)
 
-let $itv11 := interval-from-time("19:00:00.009", "20:29:20.000")
+let $itv11 := interval(time("19:00:00.009"), time("20:29:20.000"))
 let $blnEnds1 := interval-ends($itv11, $itv7)
 let $blnEnds2 := interval-ends($itv11, $itv8)
 let $blnEndedBy1 := interval-ended-by($itv7, $itv11)
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.3.query.aql
index 6b2c252..8011ad6 100644
--- a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins/overlap_bins.3.query.aql
@@ -21,9 +21,9 @@
  * Expected result: success
  **/
 
-let $itv1 := interval-from-time(time("17:23:37"), time("18:30:21"))
-let $itv2 := interval-from-date(date("1984-03-17"), date("2013-08-22"))
-let $itv3 := interval-from-datetime(datetime("1800-01-01T23:59:48.938"), datetime("2015-07-26T13:28:30.218"))
+let $itv1 := interval(time("17:23:37"), time("18:30:21"))
+let $itv2 := interval(date("1984-03-17"), date("2013-08-22"))
+let $itv3 := interval(datetime("1800-01-01T23:59:48.938"), datetime("2015-07-26T13:28:30.218"))
 return { "timebins": overlap-bins($itv1, time("00:00:00"), day-time-duration("PT30M")),
          "datebins": overlap-bins($itv2, date("1990-01-01"), year-month-duration("P20Y")),
          "datetimebins": overlap-bins($itv3, datetime("1900-01-01T00:00:00.000"), year-month-duration("P100Y")) }
diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.aql
index 41c2781..1661d68 100644
--- a/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.aql
@@ -18,7 +18,7 @@
  */
 use dataverse multitask;
 
-for $bin in overlap-bins(interval-from-time(min(for $i in dataset logs return $i.time), max(for $i in dataset logs return $i.time + duration-from-ms($i.duration * 1000))), time("00:00:00.000"), day-time-duration("PT1M"))
+for $bin in overlap-bins(interval(min(for $i in dataset logs return $i.time), max(for $i in dataset logs return $i.time + duration-from-ms($i.duration * 1000))), time("00:00:00.000"), day-time-duration("PT1M"))
 order by get-interval-start($bin)
 return {
   "timebin": $bin,
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_equality/issue363_equality.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_equality/issue363_equality.3.query.sqlpp
index da2e983..315b435 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_equality/issue363_equality.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_equality/issue363_equality.3.query.sqlpp
@@ -23,4 +23,21 @@
  * Issue        : 363
  */
 
-{'duration':(duration('P3Y6M3DT9H5M2.348S') = duration('P3Y6M3DT9H5M2.348S')),'year-month-duration':("year-month-duration"('P3Y6M') = "year-month-duration"('P3Y6M')),'day-time-duration':("day-time-duration"('P3DT9H5M2.348S') = "day-time-duration"('P3DT9H5M2.348S')),'point':(point('47.44,80.65') = point('47.44,80.65')),'line':(line('10.1234,11.1e-1 +10.2E-2,-11.22') = line('10.1234,11.1e-1 +10.2E-2,-11.22')),'polygon':(polygon('-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75') = polygon('-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75')),'circle':(circle('0.1234,-1.00e-10 +10.5E-2') = circle('0.1234,-1.00e-10 +10.5E-2')),'rectangle':(rectangle('0.1234,-1.00e-10 5.5487,0.48765') = rectangle('0.1234,-1.00e-10 5.5487,0.48765')),'interval':("interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) = "interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),'duration2':(duration('P3Y6M3DT9H5M2.348S') != duration('P4Y6M3DT9H5M2.348S')),'year-month-duration2':("year-month-duration"('P3Y6M') != "year-month-duration"('P3Y7M')),'day-time-duration2':("day-time-duration"('P3DT9H5M2.348S') != "day-time-duration"('P3DT1H5M2.348S')),'point2':(point('47.44,80.65') != point('47.4444,80.65')),'line2':(line('10.1234,11.1e-1 +10.2E-2,-11.22') != line('10.5678,11.1e-1 +10.2E-2,-11.22')),'polygon2':(polygon('-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75') != polygon('-1.0,+10.5e2 -02.19E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75')),'circle2':(circle('0.1234,-1.00e-10 +10.5E-2') != circle('0.5678,-1.00e-10 +10.5E-2')),'rectangle2':(rectangle('0.1234,-1.00e-10 5.5487,0.48765') != rectangle('0.5678,-1.00e-10 5.5487,0.48765')),'interval2':("interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) != "interval-from-datetime"(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')))};
+{ 'duration':(duration('P3Y6M3DT9H5M2.348S') = duration('P3Y6M3DT9H5M2.348S')),
+  'year-month-duration':("year-month-duration"('P3Y6M') = "year-month-duration"('P3Y6M')),
+  'day-time-duration':("day-time-duration"('P3DT9H5M2.348S') = "day-time-duration"('P3DT9H5M2.348S')),
+  'point':(point('47.44,80.65') = point('47.44,80.65')),
+  'line':(line('10.1234,11.1e-1 +10.2E-2,-11.22') = line('10.1234,11.1e-1 +10.2E-2,-11.22')),
+  'polygon':(polygon('-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75') = polygon('-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75')),
+  'circle':(circle('0.1234,-1.00e-10 +10.5E-2') = circle('0.1234,-1.00e-10 +10.5E-2')),
+  'rectangle':(rectangle('0.1234,-1.00e-10 5.5487,0.48765') = rectangle('0.1234,-1.00e-10 5.5487,0.48765')),
+  'interval':(interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) = interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),
+  'duration2':(duration('P3Y6M3DT9H5M2.348S') != duration('P4Y6M3DT9H5M2.348S')),
+  'year-month-duration2':("year-month-duration"('P3Y6M') != "year-month-duration"('P3Y7M')),
+  'day-time-duration2':("day-time-duration"('P3DT9H5M2.348S') != "day-time-duration"('P3DT1H5M2.348S')),
+  'point2':(point('47.44,80.65') != point('47.4444,80.65')),
+  'line2':(line('10.1234,11.1e-1 +10.2E-2,-11.22') != line('10.5678,11.1e-1 +10.2E-2,-11.22')),
+  'polygon2':(polygon('-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75') != polygon('-1.0,+10.5e2 -02.19E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75')),
+  'circle2':(circle('0.1234,-1.00e-10 +10.5E-2') != circle('0.5678,-1.00e-10 +10.5E-2')),
+  'rectangle2':(rectangle('0.1234,-1.00e-10 5.5487,0.48765') != rectangle('0.5678,-1.00e-10 5.5487,0.48765')),
+  'interval2':(interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) != interval(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')))};
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.sqlpp
index c72d273..f379db3 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.query.sqlpp
@@ -23,4 +23,7 @@
  * Issue        : 363
  */
 
-{'interval0':("interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) > "interval-from-datetime"(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),'interval1':("interval-from-datetime"(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) < "interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),'interval2':("interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) >= "interval-from-datetime"(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),'interval3':("interval-from-datetime"(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) <= "interval-from-datetime"(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')))};
+{ 'interval0':(interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) > interval(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),
+  'interval1':(interval(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) < interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),
+  'interval2':(interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) >= interval(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700'))),
+  'interval3':(interval(datetime('-1983-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')) <= interval(datetime('-1987-11-19T02:43:57.938+08:00'),datetime('19991112T124935948-0700')))};
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/interval/interval.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/interval/interval.3.query.sqlpp
index 83ffa9b..4ce9ff0 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/interval/interval.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/interval/interval.3.query.sqlpp
@@ -20,4 +20,30 @@
 use test;
 
 
-{'interval11':test."interval-from-date"(test.date('2010-10-30'),test.date('2012-10-21')),'interval12':test."interval-from-date"('2010-10-30',test.date('2012-10-21')),'interval13':test."interval-from-date"(test.date('2010-10-30'),'2012-10-21'),'interval14':test."interval-from-date"('2010-10-30','2012-10-21'),'interval15':test."interval-from-date"(null,'2012-10-21'),'interval16':test."interval-from-date"('2010-10-30',null),'interval21':test."interval-from-time"(test.time('03:04:05.678-11:00'),test.time('232425267+0200')),'interval22':test."interval-from-time"('03:04:05.678-11:00',test.time('232425267+0200')),'interval23':test."interval-from-time"(test.time('03:04:05.678-11:00'),'232425267+0200'),'interval24':test."interval-from-time"('03:04:05.678-11:00','232425267+0200'),'interval25':test."interval-from-time"(null,test.time('232425267+0200')),'interval26':test."interval-from-time"(test.time('03:04:05.678-11:00'),null),'interval31':test."interval-from-datetime"(test.datetime('-1987-11-19T02:43:57.938+08:00'),test.datetime('19991112T124935948-0700')),'interval32':test."interval-from-datetime"('-1987-11-19T02:43:57.938+08:00',test.datetime('19991112T124935948-0700')),'interval33':test."interval-from-datetime"(test.datetime('-1987-11-19T02:43:57.938+08:00'),'19991112T124935948-0700'),'interval34':test."interval-from-datetime"('-1987-11-19T02:43:57.938+08:00','19991112T124935948-0700'),'interval35':test."interval-from-datetime"(null,test.datetime('19991112T124935948-0700')),'interval36':test."interval-from-datetime"(test.datetime('-1987-11-19T02:43:57.938+08:00'),null),'interval41':test."interval-start-from-date"(test.date('0001-12-27'),test.duration('P3Y394DT48H398.483S')),'interval42':test."interval-start-from-date"('0001-12-27',test.duration('P3Y394DT48H398.483S')),'interval43':test."interval-start-from-date"(test.date('0001-12-27'),'P3Y394DT48H398.483S'),'interval44':test."interval-start-from-date"('0001-12-27','P3Y394DT48H398.483S'),'interval45':test."interval-start-from-date"(null,test.duration('P3Y394DT48H398.483S')),'interval46':test."interval-start-from-date"(test.date('0001-12-27'),null),'interval51':test."interval-start-from-time"(test.time('20:03:20.948'),test.duration('P60DT48M389.938S')),'interval52':test."interval-start-from-time"('20:03:20.948',test.duration('P60DT48M389.938S')),'interval53':test."interval-start-from-time"(test.time('20:03:20.948'),'P60DT48M389.938S'),'interval54':test."interval-start-from-time"('20:03:20.948','P60DT48M389.938S'),'interval55':test."interval-start-from-time"(null,test.duration('P60DT48M389.938S')),'interval56':test."interval-start-from-time"(test.time('20:03:20.948'),null),'interval61':test."interval-start-from-datetime"(test.datetime('-2043-11-19T15:32:39.293'),test.duration('P439Y3M20DT20H39M58.949S')),'interval62':test."interval-start-from-datetime"('-2043-11-19T15:32:39.293',test.duration('P439Y3M20DT20H39M58.949S')),'interval63':test."interval-start-from-datetime"(test.datetime('-2043-11-19T15:32:39.293'),'P439Y3M20DT20H39M58.949S'),'interval64':test."interval-start-from-datetime"('-2043-11-19T15:32:39.293','P439Y3M20DT20H39M58.949S'),'interval65':test."interval-start-from-datetime"(null,test.duration('P439Y3M20DT20H39M58.949S')),'interval66':test."interval-start-from-datetime"(test.datetime('-2043-11-19T15:32:39.293'),null)};
+{ 'interval41':test."interval-start-from-date"(test.date('0001-12-27'),test.duration('P3Y394DT48H398.483S')),
+  'interval42':test."interval-start-from-date"('0001-12-27',test.duration('P3Y394DT48H398.483S')),
+  'interval43':test."interval-start-from-date"(test.date('0001-12-27'),'P3Y394DT48H398.483S'),
+  'interval44':test."interval-start-from-date"('0001-12-27','P3Y394DT48H398.483S'),
+  'interval45':test."interval-start-from-date"(null,test.duration('P3Y394DT48H398.483S')),
+  'interval46':test."interval-start-from-date"(test.date('0001-12-27'),null),
+  'interval51':test."interval-start-from-time"(test.time('20:03:20.948'),test.duration('P60DT48M389.938S')),
+  'interval52':test."interval-start-from-time"('20:03:20.948',test.duration('P60DT48M389.938S')),
+  'interval53':test."interval-start-from-time"(test.time('20:03:20.948'),'P60DT48M389.938S'),
+  'interval54':test."interval-start-from-time"('20:03:20.948','P60DT48M389.938S'),
+  'interval55':test."interval-start-from-time"(null,test.duration('P60DT48M389.938S')),
+  'interval56':test."interval-start-from-time"(test.time('20:03:20.948'),null),
+  'interval61':test."interval-start-from-datetime"(test.datetime('-2043-11-19T15:32:39.293'),test.duration('P439Y3M20DT20H39M58.949S')),
+  'interval62':test."interval-start-from-datetime"('-2043-11-19T15:32:39.293',test.duration('P439Y3M20DT20H39M58.949S')),
+  'interval63':test."interval-start-from-datetime"(test.datetime('-2043-11-19T15:32:39.293'),'P439Y3M20DT20H39M58.949S'),
+  'interval64':test."interval-start-from-datetime"('-2043-11-19T15:32:39.293','P439Y3M20DT20H39M58.949S'),
+  'interval65':test."interval-start-from-datetime"(null,test.duration('P439Y3M20DT20H39M58.949S')),
+  'interval66':test."interval-start-from-datetime"(test.datetime('-2043-11-19T15:32:39.293'),null),
+  'interval71':test.interval(test.date('2010-10-30'),test.date('2012-10-21')),
+  'interval72':test.interval(null,test.date('2012-10-21')),
+  'interval73':test.interval(test.date('2010-10-30'),null),
+  'interval74':test.interval(test.time('03:04:05.678-11:00'),test.time('232425267+0200')),
+  'interval75':test.interval(null,test.time('232425267+0200')),
+  'interval76':test.interval(test.time('03:04:05.678-11:00'),null),
+  'interval77':test.interval(test.datetime('-1987-11-19T02:43:57.938+08:00'),test.datetime('19991112T124935948-0700')),
+  'interval78':test.interval(null,test.datetime('19991112T124935948-0700')),
+  'interval79':test.interval(test.datetime('-1987-11-19T02:43:57.938+08:00'),null)};
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/accessors_interval/accessors_interval.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/accessors_interval/accessors_interval.3.query.sqlpp
index 4f30c74..5a8cc6a 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/accessors_interval/accessors_interval.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/accessors_interval/accessors_interval.3.query.sqlpp
@@ -20,4 +20,9 @@
 use test;
 
 
-{'start1':test."get-interval-start"(test."interval-from-date"(test.date('2010-10-30'),'2013-04-01')),'end1':test."get-interval-end"(test."interval-from-date"(test.date('2010-10-30'),'2013-04-01')),'start2':test."get-interval-start"(test."interval-from-time"('08:09:10.234Z',test.time('203040567+0800'))),'end2':test."get-interval-end"(test."interval-from-time"('08:09:10.234Z',test.time('203040567+0800'))),'start3':test."get-interval-start"(test."interval-from-datetime"('2009-09-01T00:00:00.000+08:00',test."datetime-from-date-time"(test.date('2013-04-04'),test.time('00:00:00.000+08:00')))),'end3':test."get-interval-end"(test."interval-from-datetime"('2009-09-01T00:00:00.000+08:00',test."datetime-from-date-time"(test.date('2013-04-04'),test.time('00:00:00.000+08:00'))))};
+{ 'start1':test."get-interval-start"(test.interval(test.date('2010-10-30'),test.date('2013-04-01'))),
+  'end1':test."get-interval-end"(test.interval(test.date('2010-10-30'),test.date('2013-04-01'))),
+  'start2':test."get-interval-start"(test.interval(test.time('08:09:10.234Z'),test.time('203040567+0800'))),
+  'end2':test."get-interval-end"(test.interval(test.time('08:09:10.234Z'),test.time('203040567+0800'))),
+  'start3':test."get-interval-start"(test.interval(test.datetime('2009-09-01T00:00:00.000+08:00'),test."datetime-from-date-time"(test.date('2013-04-04'),test.time('00:00:00.000+08:00')))),
+  'end3':test."get-interval-end"(test.interval(test.datetime('2009-09-01T00:00:00.000+08:00'),test."datetime-from-date-time"(test.date('2013-04-04'),test.time('00:00:00.000+08:00'))))};
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/duration_functions/duration_functions.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/duration_functions/duration_functions.3.query.sqlpp
index 01a35b6..7f49e94 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/duration_functions/duration_functions.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/duration_functions/duration_functions.3.query.sqlpp
@@ -25,4 +25,6 @@
 use test;
 
 
-{'dr1':test."duration-from-interval"(test."interval-from-date"('2010-10-30','2010-12-21')),'dr2':test."duration-from-interval"(test."interval-from-datetime"('2012-06-26T01:01:01.111','2012-07-27T02:02:02.222')),'dr3':test."duration-from-interval"(test."interval-from-time"('12:32:38','20:29:20')),'dr4':test."duration-from-interval"(null)};
+{ 'dr1':test."duration-from-interval"(test.interval(date('2010-10-30'),date('2010-12-21'))),
+  'dr2':test."duration-from-interval"(test.interval(datetime('2012-06-26T01:01:01.111'),datetime('2012-07-27T02:02:02.222'))),
+  'dr3':test."duration-from-interval"(test.interval(time('12:32:38'),time('20:29:20'))),'dr4':test."duration-from-interval"(null)};
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.query.sqlpp
index d27952e..940be8c 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.query.sqlpp
@@ -21,4 +21,9 @@
  * Expected result: success
  **/
 
-select element {'overlap1':"get-overlapping-interval"("interval-from-time"(time('11:23:39'),time('18:27:19')),"interval-from-time"(time('12:23:39'),time('23:18:00'))),'overlap2':"get-overlapping-interval"("interval-from-time"(time('12:23:39'),time('18:27:19')),"interval-from-time"(time('07:19:39'),time('09:18:00'))),'overlap3':"get-overlapping-interval"("interval-from-date"(date('1980-11-30'),date('1999-09-09')),"interval-from-date"(date('2013-01-01'),date('2014-01-01'))),'overlap4':"get-overlapping-interval"("interval-from-date"(date('1980-11-30'),date('2099-09-09')),"interval-from-date"(date('2013-01-01'),date('2014-01-01'))),'overlap5':"get-overlapping-interval"("interval-from-datetime"(datetime('1844-03-03T11:19:39'),datetime('2000-10-30T18:27:19')),"interval-from-datetime"(datetime('1989-03-04T12:23:39'),datetime('2009-10-10T23:18:00'))),'overlap6':"get-overlapping-interval"("interval-from-datetime"(datetime('1989-03-04T12:23:39'),datetime('2000-10-30T18:27:19')),"interval-from-datetime"(datetime('1844-03-03T11:19:39'),datetime('1888-10-10T23:18:00')))};
+select element {'overlap1':"get-overlapping-interval"(interval(time('11:23:39'),time('18:27:19')),interval(time('12:23:39'),time('23:18:00'))),
+  'overlap2':"get-overlapping-interval"(interval(time('12:23:39'),time('18:27:19')),interval(time('07:19:39'),time('09:18:00'))),
+  'overlap3':"get-overlapping-interval"(interval(date('1980-11-30'),date('1999-09-09')),interval(date('2013-01-01'),date('2014-01-01'))),
+  'overlap4':"get-overlapping-interval"(interval(date('1980-11-30'),date('2099-09-09')),interval(date('2013-01-01'),date('2014-01-01'))),
+  'overlap5':"get-overlapping-interval"(interval(datetime('1844-03-03T11:19:39'),datetime('2000-10-30T18:27:19')),interval(datetime('1989-03-04T12:23:39'),datetime('2009-10-10T23:18:00'))),
+  'overlap6':"get-overlapping-interval"(interval(datetime('1989-03-04T12:23:39'),datetime('2000-10-30T18:27:19')),interval(datetime('1844-03-03T11:19:39'),datetime('1888-10-10T23:18:00')))};
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_functions/interval_functions.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_functions/interval_functions.3.query.sqlpp
index bf5fd67..d7c278d 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_functions/interval_functions.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_functions/interval_functions.3.query.sqlpp
@@ -19,25 +19,25 @@
 
 use test;
 
-let itv1 = "interval-from-date"('2010-10-30', '2010-12-21')
-,itv2 = "interval-from-date"('2011-10-30', '2012-10-21')
-, itv3 = "interval-from-date"('2010-12-21', '2013-01-01')
+let itv1 = interval(date('2010-10-30'), date('2010-12-21'))
+, itv2 = interval(date('2011-10-30'), date('2012-10-21'))
+, itv3 = interval(date('2010-12-21'), date('2013-01-01'))
 , blnBefore1 = "interval-before"(itv1, itv2)
 , blnAfter1 = "interval-after"(itv2, itv1)
 , blnBefore2 = "interval-before"(itv1, itv3)
 , blnAfter2 = "interval-after"(itv3, itv1)
 
-, itv4 = "interval-from-datetime"('2012-06-26T01:01:01.111', '2012-07-27T02:02:02.222')
-, itv5 = "interval-from-datetime"('20120727T020202222', '2013-08-08T03:03:03.333')
-, itv6 = "interval-from-datetime"('19000707T020202222', '2013-08-07T03:03:03.333')
+, itv4 = interval(datetime('2012-06-26T01:01:01.111'), datetime('2012-07-27T02:02:02.222'))
+, itv5 = interval(datetime('20120727T020202222'), datetime('2013-08-08T03:03:03.333'))
+, itv6 = interval(datetime('19000707T020202222'), datetime('2013-08-07T03:03:03.333'))
 , blnMeet1 = "interval-meets"(itv4, itv5)
 , blnMetBy1 = "interval-met-by"(itv5, itv4)
 , blnMeet2 = "interval-meets"(itv6, itv4)
 , blnMetBy2 = "interval-met-by"(itv6, itv4)
 
-, itv7 = "interval-from-time"('12:32:38', '20:29:20')
-, itv8 = "interval-from-time"('17:48:19', '22:19:49')
-, itv9 = "interval-from-time"('01:32:49', '17:48:19')
+, itv7 = interval(time('12:32:38'), time('20:29:20'))
+, itv8 = interval(time('17:48:19'), time('22:19:49'))
+, itv9 = interval(time('01:32:49'), time('17:48:19'))
 , blnOverlaps1 = "interval-overlaps"(itv7, itv8)
 , blnOverlapped1 = "interval-overlapped-by"(itv8, itv7)
 , blnOverlaps2 = "interval-overlaps"(itv9, itv8)
@@ -45,21 +45,21 @@
 , blnOverlap1 = "interval-overlapping"(itv9, itv7)
 , blnOverlap2 = "interval-overlapping"(itv9, itv8)
 
-, itv10 = "interval-from-date"('2010-10-30', '2010-11-30')
+, itv10 = interval(date('2010-10-30'), date('2010-11-30'))
 , blnStarts1 = "interval-starts"(itv10, itv1)
 , blnStarts2 = "interval-starts"(itv10, itv2)
 , blnStartedBy1 = "interval-started-by"(itv1, itv10)
 , blnStartedBy2 = "interval-started-by"(itv10, itv2)
 
-, itv10 = "interval-from-datetime"('19000707T020202222', '2013-08-07T03:03:03.333')
-, itv11 = "interval-from-datetime"('19990707T020202222', '2013-08-07T03:03:03.333')
-, itv12 = "interval-from-datetime"('-19990707T020202222', '2013-08-07T03:03:03.333')
+, itv10 = interval(datetime('19000707T020202222'), datetime('2013-08-07T03:03:03.333'))
+, itv11 = interval(datetime('19990707T020202222'), datetime('2013-08-07T03:03:03.333'))
+, itv12 = interval(datetime('-19990707T020202222'), datetime('2013-08-07T03:03:03.333'))
 , blnCovers1 = "interval-covers"(itv10, itv11)
 , blnCovers2 = "interval-covers"(itv10, itv12)
 , blnCoveredBy1 = "interval-covered-by"(itv11, itv10)
 , blnCoveredBy2 = "interval-covered-by"(itv12, itv10)
 
-, itv11 = "interval-from-time"('19:00:00.009', '20:29:20.000')
+, itv11 = interval(time('19:00:00.009'), time('20:29:20.000'))
 , blnEnds1 = "interval-ends"(itv11, itv7)
 , blnEnds2 = "interval-ends"(itv11, itv8)
 , blnEndedBy1 = "interval-ended-by"(itv7, itv11)
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins/overlap_bins.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins/overlap_bins.3.query.sqlpp
index fa484e0..8f4b04b 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins/overlap_bins.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins/overlap_bins.3.query.sqlpp
@@ -21,4 +21,7 @@
  * Expected result: success
  **/
 
-{'timebins':"overlap-bins"("interval-from-time"(time('17:23:37'),time('18:30:21')),time('00:00:00'),"day-time-duration"('PT30M')),'datebins':"overlap-bins"("interval-from-date"(date('1984-03-17'),date('2013-08-22')),date('1990-01-01'),"year-month-duration"('P20Y')),'datetimebins':"overlap-bins"("interval-from-datetime"(datetime('1800-01-01T23:59:48.938'),datetime('2015-07-26T13:28:30.218')),datetime('1900-01-01T00:00:00.000'),"year-month-duration"('P100Y'))};
+{ 'timebins':"overlap-bins"(interval(time('17:23:37'),time('18:30:21')),time('00:00:00'),"day-time-duration"('PT30M')),
+  'datebins':"overlap-bins"(interval(date('1984-03-17'),date('2013-08-22')),date('1990-01-01'),"year-month-duration"('P20Y')),
+  'datetimebins':"overlap-bins"(interval(datetime('1800-01-01T23:59:48.938'),datetime('2015-07-26T13:28:30.218')),datetime('1900-01-01T00:00:00.000'),
+  "year-month-duration"('P100Y'))};
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.sqlpp
index cfce69e..c996e7d 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.sqlpp
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.query.sqlpp
@@ -27,7 +27,7 @@
         group by i.app as subgid
         order by subgid,multitask.count(i)
     )}
-from  multitask."overlap-bins"(multitask."interval-from-time"(multitask.min((
+from  multitask."overlap-bins"(multitask.interval(multitask.min((
     select element i.time
     from  logs as i
 )),multitask.max((
diff --git a/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.3.adm b/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.3.adm
index 35b6077..c55c2fc 100644
--- a/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.3.adm
+++ b/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.3.adm
@@ -1,7 +1,7 @@
-interval-date("2001-01-01, 2010-01-01")
-interval-date("2002-01-01, 2003-01-01")
-interval-date("2002-01-01, 2010-01-01")
-interval-date("2003-01-01, 2008-01-01")
-interval-date("2003-01-01, 2008-01-01")
-interval-date("2004-01-01, 2009-01-01")
-interval-date("2006-01-01, 2010-01-01")
\ No newline at end of file
+interval(date("2001-01-01"), date("2010-01-01"))
+interval(date("2002-01-01"), date("2003-01-01"))
+interval(date("2002-01-01"), date("2010-01-01"))
+interval(date("2003-01-01"), date("2008-01-01"))
+interval(date("2003-01-01"), date("2008-01-01"))
+interval(date("2004-01-01"), date("2009-01-01"))
+interval(date("2006-01-01"), date("2010-01-01"))
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.4.adm b/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.4.adm
index b8b3d7a..0ce3141 100644
--- a/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.4.adm
+++ b/asterix-app/src/test/resources/runtimets/results/comparison/interval_order/interval_order.4.adm
@@ -1,7 +1,7 @@
-interval-date("2006-01-01, 2010-01-01")
-interval-date("2002-01-01, 2010-01-01")
-interval-date("2001-01-01, 2010-01-01")
-interval-date("2004-01-01, 2009-01-01")
-interval-date("2003-01-01, 2008-01-01")
-interval-date("2003-01-01, 2008-01-01")
-interval-date("2002-01-01, 2003-01-01")
\ No newline at end of file
+interval(date("2006-01-01"), date("2010-01-01"))
+interval(date("2002-01-01"), date("2010-01-01"))
+interval(date("2001-01-01"), date("2010-01-01"))
+interval(date("2004-01-01"), date("2009-01-01"))
+interval(date("2003-01-01"), date("2008-01-01"))
+interval(date("2003-01-01"), date("2008-01-01"))
+interval(date("2002-01-01"), date("2003-01-01"))
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results/constructor/interval/interval.1.adm b/asterix-app/src/test/resources/runtimets/results/constructor/interval/interval.1.adm
index d6c9c9b..bc00add 100644
--- a/asterix-app/src/test/resources/runtimets/results/constructor/interval/interval.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/constructor/interval/interval.1.adm
@@ -1 +1 @@
-{ "interval11": interval-date("2010-10-30, 2012-10-21"), "interval12": interval-date("2010-10-30, 2012-10-21"), "interval13": interval-date("2010-10-30, 2012-10-21"), "interval14": interval-date("2010-10-30, 2012-10-21"), "interval15": null, "interval16": null, "interval21": interval-time("14:04:05.678Z, 21:24:25.267Z"), "interval22": interval-time("14:04:05.678Z, 21:24:25.267Z"), "interval23": interval-time("14:04:05.678Z, 21:24:25.267Z"), "interval24": interval-time("14:04:05.678Z, 21:24:25.267Z"), "interval25": null, "interval26": null, "interval31": interval-datetime("-1987-11-18T18:43:57.938Z, 1999-11-12T19:49:35.948Z"), "interval32": interval-datetime("-1987-11-18T18:43:57.938Z, 1999-11-12T19:49:35.948Z"), "interval33": interval-datetime("-1987-11-18T18:43:57.938Z, 1999-11-12T19:49:35.948Z"), "interval34": interval-datetime("-1987-11-18T18:43:57.938Z, 1999-11-12T19:49:35.948Z"), "interval35": null, "interval36": null, "interval41": interval-date("0001-12-27, 0006-01-27"), "interval42": interval-date("0001-12-27, 0006-01-27"), "interval43": interval-date("0001-12-27, 0006-01-27"), "interval44": interval-date("0001-12-27, 0006-01-27"), "interval45": null, "interval46": null, "interval51": interval-time("20:03:20.948Z, 20:57:50.886Z"), "interval52": interval-time("20:03:20.948Z, 20:57:50.886Z"), "interval53": interval-time("20:03:20.948Z, 20:57:50.886Z"), "interval54": interval-time("20:03:20.948Z, 20:57:50.886Z"), "interval55": null, "interval56": null, "interval61": interval-datetime("-2043-11-19T15:32:39.293Z, -1603-03-12T12:12:38.242Z"), "interval62": interval-datetime("-2043-11-19T15:32:39.293Z, -1603-03-12T12:12:38.242Z"), "interval63": interval-datetime("-2043-11-19T15:32:39.293Z, -1603-03-12T12:12:38.242Z"), "interval64": interval-datetime("-2043-11-19T15:32:39.293Z, -1603-03-12T12:12:38.242Z"), "interval65": null, "interval66": null }
+{ "interval41": interval(date("0001-12-27"), date("0006-01-27")), "interval42": interval(date("0001-12-27"), date("0006-01-27")), "interval43": interval(date("0001-12-27"), date("0006-01-27")), "interval44": interval(date("0001-12-27"), date("0006-01-27")), "interval45": null, "interval46": null, "interval51": interval(time("20:03:20.948Z"), time("20:57:50.886Z")), "interval52": interval(time("20:03:20.948Z"), time("20:57:50.886Z")), "interval53": interval(time("20:03:20.948Z"), time("20:57:50.886Z")), "interval54": interval(time("20:03:20.948Z"), time("20:57:50.886Z")), "interval55": null, "interval56": null, "interval61": interval(datetime("-2043-11-19T15:32:39.293Z"), datetime("-1603-03-12T12:12:38.242Z")), "interval62": interval(datetime("-2043-11-19T15:32:39.293Z"), datetime("-1603-03-12T12:12:38.242Z")), "interval63": interval(datetime("-2043-11-19T15:32:39.293Z"), datetime("-1603-03-12T12:12:38.242Z")), "interval64": interval(datetime("-2043-11-19T15:32:39.293Z"), datetime("-1603-03-12T12:12:38.242Z")), "interval65": null, "interval66": null, "interval71": interval(date("2010-10-30"), date("2012-10-21")), "interval72": null, "interval73": null, "interval74": interval(time("14:04:05.678Z"), time("21:24:25.267Z")), "interval75": null, "interval76": null, "interval77": interval(datetime("-1987-11-18T18:43:57.938Z"), datetime("1999-11-12T19:49:35.948Z")), "interval78": null, "interval79": null }
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/get_overlapping_interval/get_overlapping_interval.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/get_overlapping_interval/get_overlapping_interval.1.adm
index 4c3ce59..a6a2c22 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/get_overlapping_interval/get_overlapping_interval.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/get_overlapping_interval/get_overlapping_interval.1.adm
@@ -1 +1 @@
-{ "overlap1": interval-time("12:23:39.000Z, 18:27:19.000Z"), "overlap2": null, "overlap3": null, "overlap4": interval-date("2013-01-01, 2014-01-01"), "overlap5": interval-datetime("1989-03-04T12:23:39.000Z, 2000-10-30T18:27:19.000Z"), "overlap6": null }
+{ "overlap1": interval(time("12:23:39.000Z"), time("18:27:19.000Z")), "overlap2": null, "overlap3": null, "overlap4": interval(date("2013-01-01"), date("2014-01-01")), "overlap5": interval(datetime("1989-03-04T12:23:39.000Z"), datetime("2000-10-30T18:27:19.000Z")), "overlap6": null }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm
index 61de6de..5eb8905 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds/insert_from_ext_ds.1.adm
@@ -1,4 +1,4 @@
-{ "date": date("-2012-12-12"), "time": time("23:49:12.390Z"), "datetime": datetime("2012-12-12T00:00:00.001Z"), "duration": duration("P20Y19DT4H14M23.34S"), "interval": interval-datetime("2012-12-12T00:00:00.001Z, 2013-08-10T22:10:15.398Z"), "ymduration": null, "dtduration": null }
-{ "date": null, "time": time("04:12:12.219Z"), "datetime": datetime("1920-12-21T11:29:18.478Z"), "duration": null, "interval": interval-time("04:29:30.000Z, 07:59:59.999Z"), "ymduration": null, "dtduration": null }
-{ "date": null, "time": null, "datetime": datetime("-0290-03-22T17:59:48.999Z"), "duration": duration("-P27Y148D"), "interval": interval-date("-2012-03-17, 2013-04-01"), "ymduration": null, "dtduration": null }
+{ "date": date("-2012-12-12"), "time": time("23:49:12.390Z"), "datetime": datetime("2012-12-12T00:00:00.001Z"), "duration": duration("P20Y19DT4H14M23.34S"), "interval": interval(datetime("2012-12-12T00:00:00.001Z"), datetime("2013-08-10T22:10:15.398Z")), "ymduration": null, "dtduration": null }
+{ "date": null, "time": time("04:12:12.219Z"), "datetime": datetime("1920-12-21T11:29:18.478Z"), "duration": null, "interval": interval(time("04:29:30.000Z"), time("07:59:59.999Z")), "ymduration": null, "dtduration": null }
+{ "date": null, "time": null, "datetime": datetime("-0290-03-22T17:59:48.999Z"), "duration": duration("-P27Y148D"), "interval": interval(date("-2012-03-17"), date("2013-04-01")), "ymduration": null, "dtduration": null }
 { "date": null, "time": null, "datetime": null, "duration": null, "interval": null, "ymduration": year-month-duration("P31Y2M"), "dtduration": day-time-duration("-P148D") }
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds_2/insert_from_ext_ds_2.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds_2/insert_from_ext_ds_2.1.adm
index 2c485e2..2b03194 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds_2/insert_from_ext_ds_2.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/insert_from_ext_ds_2/insert_from_ext_ds_2.1.adm
@@ -1,3 +1,3 @@
-{ "date": date("-9971-09-24"), "time": time("11:38:17.154Z"), "datetime": datetime("1259-11-13T09:49:11.852Z"), "duration": duration("P473653Y9M4566143DT10H20M53.61S"), "year-month-duration": year-month-duration("P148233Y10M"), "day-time-duration": day-time-duration("-P7236357DT2H56M56.164S"), "date-interval": interval-date("-0255-09-06, 4925-05-03"), "time-interval": interval-time("12:10:45.169Z, 15:37:48.736Z"), "datetime-interval": interval-datetime("0534-12-08T08:20:31.487Z, 6778-02-16T22:40:21.653Z") }
-{ "date": date("4619-11-23"), "time": time("14:29:36.786Z"), "datetime": datetime("2749-01-27T17:27:30.020Z"), "duration": duration("-P474133Y7M854630DT4H40M6.45S"), "year-month-duration": year-month-duration("P193989Y3M"), "day-time-duration": day-time-duration("P4477686DT4H49M31.87S"), "date-interval": interval-date("-9537-08-04, 9656-06-03"), "time-interval": interval-time("12:04:45.689Z, 12:41:59.002Z"), "datetime-interval": interval-datetime("-2640-10-11T17:32:15.675Z, 4104-02-01T05:59:11.902Z") }
-{ "date": date("7986-11-25"), "time": time("12:49:39.736Z"), "datetime": datetime("-8337-01-30T15:23:07.598Z"), "duration": duration("-P184484Y7M2241423DT10H42M49.500S"), "year-month-duration": year-month-duration("-P546031Y3M"), "day-time-duration": day-time-duration("P2623386DT10H32M31.983S"), "date-interval": interval-date("-4514-05-24, 3337-08-26"), "time-interval": interval-time("04:16:42.321Z, 12:22:56.816Z"), "datetime-interval": interval-datetime("2129-12-12T13:18:35.758Z, 8647-07-01T13:10:19.691Z") }
+{ "date": date("-9971-09-24"), "time": time("11:38:17.154Z"), "datetime": datetime("1259-11-13T09:49:11.852Z"), "duration": duration("P473653Y9M4566143DT10H20M53.61S"), "year-month-duration": year-month-duration("P148233Y10M"), "day-time-duration": day-time-duration("-P7236357DT2H56M56.164S"), "date-interval": interval(date("-0255-09-06"), date("4925-05-03")), "time-interval": interval(time("12:10:45.169Z"), time("15:37:48.736Z")), "datetime-interval": interval(datetime("0534-12-08T08:20:31.487Z"), datetime("6778-02-16T22:40:21.653Z")) }
+{ "date": date("4619-11-23"), "time": time("14:29:36.786Z"), "datetime": datetime("2749-01-27T17:27:30.020Z"), "duration": duration("-P474133Y7M854630DT4H40M6.45S"), "year-month-duration": year-month-duration("P193989Y3M"), "day-time-duration": day-time-duration("P4477686DT4H49M31.87S"), "date-interval": interval(date("-9537-08-04"), date("9656-06-03")), "time-interval": interval(time("12:04:45.689Z"), time("12:41:59.002Z")), "datetime-interval": interval(datetime("-2640-10-11T17:32:15.675Z"), datetime("4104-02-01T05:59:11.902Z")) }
+{ "date": date("7986-11-25"), "time": time("12:49:39.736Z"), "datetime": datetime("-8337-01-30T15:23:07.598Z"), "duration": duration("-P184484Y7M2241423DT10H42M49.500S"), "year-month-duration": year-month-duration("-P546031Y3M"), "day-time-duration": day-time-duration("P2623386DT10H32M31.983S"), "date-interval": interval(date("-4514-05-24"), date("3337-08-26")), "time-interval": interval(time("04:16:42.321Z"), time("12:22:56.816Z")), "datetime-interval": interval(datetime("2129-12-12T13:18:35.758Z"), datetime("8647-07-01T13:10:19.691Z")) }
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin/interval_bin.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin/interval_bin.1.adm
index 46fbfa5..8c95d98 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin/interval_bin.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin/interval_bin.1.adm
@@ -1 +1 @@
-{ "bin1": interval-date("2010-01-01, 2011-01-01"), "bin2": interval-date("2010-01-01, 2011-01-01"), "bin3": interval-datetime("-1987-07-01T00:00:00.000Z, -1986-01-01T00:00:00.000Z"), "bin4": interval-datetime("-1987-11-19T12:00:00.000Z, -1987-11-20T00:00:00.000Z"), "bin5": interval-time("04:00:00.000Z, 06:00:00.000Z"), "bin6": null, "bin7": null, "bin8": null }
+{ "bin1": interval(date("2010-01-01"), date("2011-01-01")), "bin2": interval(date("2010-01-01"), date("2011-01-01")), "bin3": interval(datetime("-1987-07-01T00:00:00.000Z"), datetime("-1986-01-01T00:00:00.000Z")), "bin4": interval(datetime("-1987-11-19T12:00:00.000Z"), datetime("-1987-11-20T00:00:00.000Z")), "bin5": interval(time("04:00:00.000Z"), time("06:00:00.000Z")), "bin6": null, "bin7": null, "bin8": null }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_0/interval_bin_gby_0.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_0/interval_bin_gby_0.1.adm
index 7902191..aa0f939 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_0/interval_bin_gby_0.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_0/interval_bin_gby_0.1.adm
@@ -1,4 +1,4 @@
-{ "tbin": interval-datetime("-1990-01-01T00:00:00.000Z, -1970-01-01T00:00:00.000Z"), "count": 4 }
-{ "tbin": interval-datetime("-0990-01-01T00:00:00.000Z, -0970-01-01T00:00:00.000Z"), "count": 1 }
-{ "tbin": interval-datetime("1970-01-01T00:00:00.000Z, 1990-01-01T00:00:00.000Z"), "count": 5 }
-{ "tbin": interval-datetime("2010-01-01T00:00:00.000Z, 2030-01-01T00:00:00.000Z"), "count": 2 }
+{ "tbin": interval(datetime("-1990-01-01T00:00:00.000Z"), datetime("-1970-01-01T00:00:00.000Z")), "count": 4 }
+{ "tbin": interval(datetime("-0990-01-01T00:00:00.000Z"), datetime("-0970-01-01T00:00:00.000Z")), "count": 1 }
+{ "tbin": interval(datetime("1970-01-01T00:00:00.000Z"), datetime("1990-01-01T00:00:00.000Z")), "count": 5 }
+{ "tbin": interval(datetime("2010-01-01T00:00:00.000Z"), datetime("2030-01-01T00:00:00.000Z")), "count": 2 }
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_1/interval_bin_gby_1.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_1/interval_bin_gby_1.1.adm
index 3ff3ce0..37fb65f 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_1/interval_bin_gby_1.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/interval_bin_gby_1/interval_bin_gby_1.1.adm
@@ -1,8 +1,8 @@
-{ "tbin": interval-time("00:20:00.000Z, 00:30:00.000Z"), "count": 1 }
-{ "tbin": interval-time("09:30:00.000Z, 09:40:00.000Z"), "count": 1 }
-{ "tbin": interval-time("17:20:00.000Z, 17:30:00.000Z"), "count": 1 }
-{ "tbin": interval-time("18:00:00.000Z, 18:10:00.000Z"), "count": 1 }
-{ "tbin": interval-time("23:20:00.000Z, 23:30:00.000Z"), "count": 1 }
-{ "tbin": interval-time("23:30:00.000Z, 23:40:00.000Z"), "count": 1 }
-{ "tbin": interval-time("23:40:00.000Z, 23:50:00.000Z"), "count": 5 }
-{ "tbin": interval-time("23:50:00.000Z, 00:00:00.000Z"), "count": 1 }
+{ "tbin": interval(time("00:20:00.000Z"), time("00:30:00.000Z")), "count": 1 }
+{ "tbin": interval(time("09:30:00.000Z"), time("09:40:00.000Z")), "count": 1 }
+{ "tbin": interval(time("17:20:00.000Z"), time("17:30:00.000Z")), "count": 1 }
+{ "tbin": interval(time("18:00:00.000Z"), time("18:10:00.000Z")), "count": 1 }
+{ "tbin": interval(time("23:20:00.000Z"), time("23:30:00.000Z")), "count": 1 }
+{ "tbin": interval(time("23:30:00.000Z"), time("23:40:00.000Z")), "count": 1 }
+{ "tbin": interval(time("23:40:00.000Z"), time("23:50:00.000Z")), "count": 5 }
+{ "tbin": interval(time("23:50:00.000Z"), time("00:00:00.000Z")), "count": 1 }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins/overlap_bins.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins/overlap_bins.1.adm
index 88f2be1..a17ee5e 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins/overlap_bins.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins/overlap_bins.1.adm
@@ -1 +1 @@
-{ "timebins": [ interval-time("17:00:00.000Z, 17:30:00.000Z"), interval-time("17:30:00.000Z, 18:00:00.000Z"), interval-time("18:00:00.000Z, 18:30:00.000Z"), interval-time("18:30:00.000Z, 19:00:00.000Z") ], "datebins": [ interval-date("1970-01-01, 1990-01-01"), interval-date("1990-01-01, 2010-01-01"), interval-date("2010-01-01, 2030-01-01") ], "datetimebins": [ interval-datetime("1800-01-01T00:00:00.000Z, 1900-01-01T00:00:00.000Z"), interval-datetime("1900-01-01T00:00:00.000Z, 2000-01-01T00:00:00.000Z"), interval-datetime("2000-01-01T00:00:00.000Z, 2100-01-01T00:00:00.000Z") ] }
+{ "timebins": [ interval(time("17:00:00.000Z"), time("17:30:00.000Z")), interval(time("17:30:00.000Z"), time("18:00:00.000Z")), interval(time("18:00:00.000Z"), time("18:30:00.000Z")), interval(time("18:30:00.000Z"), time("19:00:00.000Z")) ], "datebins": [ interval(date("1970-01-01"), date("1990-01-01")), interval(date("1990-01-01"), date("2010-01-01")), interval(date("2010-01-01"), date("2030-01-01")) ], "datetimebins": [ interval(datetime("1800-01-01T00:00:00.000Z"), datetime("1900-01-01T00:00:00.000Z")), interval(datetime("1900-01-01T00:00:00.000Z"), datetime("2000-01-01T00:00:00.000Z")), interval(datetime("2000-01-01T00:00:00.000Z"), datetime("2100-01-01T00:00:00.000Z")) ] }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_0/overlap_bins_gby_0.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_0/overlap_bins_gby_0.1.adm
index 5402cb5..551e054 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_0/overlap_bins_gby_0.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_0/overlap_bins_gby_0.1.adm
@@ -1,23 +1,23 @@
-{ "tbin": interval-time("00:00:00.000Z, 01:30:00.000Z"), "interval": interval-time("00:27:13.432Z, 01:27:13.432Z"), "overlap": interval-time("00:27:13.432Z, 01:27:13.432Z") }
-{ "tbin": interval-time("07:30:00.000Z, 09:00:00.000Z"), "interval": interval-time("07:49:23.938Z, 10:49:23.938Z"), "overlap": interval-time("07:49:23.938Z, 09:00:00.000Z") }
-{ "tbin": interval-time("09:00:00.000Z, 10:30:00.000Z"), "interval": interval-time("07:49:23.938Z, 10:49:23.938Z"), "overlap": interval-time("09:00:00.000Z, 10:30:00.000Z") }
-{ "tbin": interval-time("09:00:00.000Z, 10:30:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("09:35:28.039Z, 10:30:00.000Z") }
-{ "tbin": interval-time("10:30:00.000Z, 12:00:00.000Z"), "interval": interval-time("07:49:23.938Z, 10:49:23.938Z"), "overlap": interval-time("10:30:00.000Z, 10:49:23.938Z") }
-{ "tbin": interval-time("10:30:00.000Z, 12:00:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("10:30:00.000Z, 12:00:00.000Z") }
-{ "tbin": interval-time("12:00:00.000Z, 13:30:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("12:00:00.000Z, 13:30:00.000Z") }
-{ "tbin": interval-time("12:00:00.000Z, 13:30:00.000Z"), "interval": interval-time("12:49:23.938Z, 15:49:23.938Z"), "overlap": interval-time("12:49:23.938Z, 13:30:00.000Z") }
-{ "tbin": interval-time("13:30:00.000Z, 15:00:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("13:30:00.000Z, 15:00:00.000Z") }
-{ "tbin": interval-time("13:30:00.000Z, 15:00:00.000Z"), "interval": interval-time("12:49:23.938Z, 15:49:23.938Z"), "overlap": interval-time("13:30:00.000Z, 15:00:00.000Z") }
-{ "tbin": interval-time("15:00:00.000Z, 16:30:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("15:00:00.000Z, 16:30:00.000Z") }
-{ "tbin": interval-time("15:00:00.000Z, 16:30:00.000Z"), "interval": interval-time("12:49:23.938Z, 15:49:23.938Z"), "overlap": interval-time("15:00:00.000Z, 15:49:23.938Z") }
-{ "tbin": interval-time("16:30:00.000Z, 18:00:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("16:30:00.000Z, 18:00:00.000Z") }
-{ "tbin": interval-time("16:30:00.000Z, 18:00:00.000Z"), "interval": interval-time("17:28:13.900Z, 17:28:32.900Z"), "overlap": interval-time("17:28:13.900Z, 17:28:32.900Z") }
-{ "tbin": interval-time("18:00:00.000Z, 19:30:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("18:00:00.000Z, 19:30:00.000Z") }
-{ "tbin": interval-time("18:00:00.000Z, 19:30:00.000Z"), "interval": interval-time("18:00:00.000Z, 20:00:00.000Z"), "overlap": interval-time("18:00:00.000Z, 19:30:00.000Z") }
-{ "tbin": interval-time("19:30:00.000Z, 21:00:00.000Z"), "interval": interval-time("09:35:28.039Z, 20:25:28.039Z"), "overlap": interval-time("19:30:00.000Z, 20:25:28.039Z") }
-{ "tbin": interval-time("19:30:00.000Z, 21:00:00.000Z"), "interval": interval-time("18:00:00.000Z, 20:00:00.000Z"), "overlap": interval-time("19:30:00.000Z, 20:00:00.000Z") }
-{ "tbin": interval-time("22:30:00.000Z, 00:00:00.000Z"), "interval": interval-time("23:22:38.000Z, 23:42:38.000Z"), "overlap": interval-time("23:22:38.000Z, 23:42:38.000Z") }
-{ "tbin": interval-time("22:30:00.000Z, 00:00:00.000Z"), "interval": interval-time("23:30:00.000Z, 23:32:00.000Z"), "overlap": interval-time("23:30:00.000Z, 23:32:00.000Z") }
-{ "tbin": interval-time("22:30:00.000Z, 00:00:00.000Z"), "interval": interval-time("23:49:23.938Z, 23:54:23.938Z"), "overlap": interval-time("23:49:23.938Z, 23:54:23.938Z") }
-{ "tbin": interval-time("22:30:00.000Z, 00:00:00.000Z"), "interval": interval-time("23:49:33.938Z, 23:50:03.938Z"), "overlap": interval-time("23:49:33.938Z, 23:50:03.938Z") }
-{ "tbin": interval-time("22:30:00.000Z, 00:00:00.000Z"), "interval": interval-time("23:58:17.038Z, 23:58:56.420Z"), "overlap": interval-time("23:58:17.038Z, 23:58:56.420Z") }
+{ "tbin": interval(time("00:00:00.000Z"), time("01:30:00.000Z")), "interval": interval(time("00:27:13.432Z"), time("01:27:13.432Z")), "overlap": interval(time("00:27:13.432Z"), time("01:27:13.432Z")) }
+{ "tbin": interval(time("07:30:00.000Z"), time("09:00:00.000Z")), "interval": interval(time("07:49:23.938Z"), time("10:49:23.938Z")), "overlap": interval(time("07:49:23.938Z"), time("09:00:00.000Z")) }
+{ "tbin": interval(time("09:00:00.000Z"), time("10:30:00.000Z")), "interval": interval(time("07:49:23.938Z"), time("10:49:23.938Z")), "overlap": interval(time("09:00:00.000Z"), time("10:30:00.000Z")) }
+{ "tbin": interval(time("09:00:00.000Z"), time("10:30:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("09:35:28.039Z"), time("10:30:00.000Z")) }
+{ "tbin": interval(time("10:30:00.000Z"), time("12:00:00.000Z")), "interval": interval(time("07:49:23.938Z"), time("10:49:23.938Z")), "overlap": interval(time("10:30:00.000Z"), time("10:49:23.938Z")) }
+{ "tbin": interval(time("10:30:00.000Z"), time("12:00:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("10:30:00.000Z"), time("12:00:00.000Z")) }
+{ "tbin": interval(time("12:00:00.000Z"), time("13:30:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("12:00:00.000Z"), time("13:30:00.000Z")) }
+{ "tbin": interval(time("12:00:00.000Z"), time("13:30:00.000Z")), "interval": interval(time("12:49:23.938Z"), time("15:49:23.938Z")), "overlap": interval(time("12:49:23.938Z"), time("13:30:00.000Z")) }
+{ "tbin": interval(time("13:30:00.000Z"), time("15:00:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("13:30:00.000Z"), time("15:00:00.000Z")) }
+{ "tbin": interval(time("13:30:00.000Z"), time("15:00:00.000Z")), "interval": interval(time("12:49:23.938Z"), time("15:49:23.938Z")), "overlap": interval(time("13:30:00.000Z"), time("15:00:00.000Z")) }
+{ "tbin": interval(time("15:00:00.000Z"), time("16:30:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("15:00:00.000Z"), time("16:30:00.000Z")) }
+{ "tbin": interval(time("15:00:00.000Z"), time("16:30:00.000Z")), "interval": interval(time("12:49:23.938Z"), time("15:49:23.938Z")), "overlap": interval(time("15:00:00.000Z"), time("15:49:23.938Z")) }
+{ "tbin": interval(time("16:30:00.000Z"), time("18:00:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("16:30:00.000Z"), time("18:00:00.000Z")) }
+{ "tbin": interval(time("16:30:00.000Z"), time("18:00:00.000Z")), "interval": interval(time("17:28:13.900Z"), time("17:28:32.900Z")), "overlap": interval(time("17:28:13.900Z"), time("17:28:32.900Z")) }
+{ "tbin": interval(time("18:00:00.000Z"), time("19:30:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("18:00:00.000Z"), time("19:30:00.000Z")) }
+{ "tbin": interval(time("18:00:00.000Z"), time("19:30:00.000Z")), "interval": interval(time("18:00:00.000Z"), time("20:00:00.000Z")), "overlap": interval(time("18:00:00.000Z"), time("19:30:00.000Z")) }
+{ "tbin": interval(time("19:30:00.000Z"), time("21:00:00.000Z")), "interval": interval(time("09:35:28.039Z"), time("20:25:28.039Z")), "overlap": interval(time("19:30:00.000Z"), time("20:25:28.039Z")) }
+{ "tbin": interval(time("19:30:00.000Z"), time("21:00:00.000Z")), "interval": interval(time("18:00:00.000Z"), time("20:00:00.000Z")), "overlap": interval(time("19:30:00.000Z"), time("20:00:00.000Z")) }
+{ "tbin": interval(time("22:30:00.000Z"), time("00:00:00.000Z")), "interval": interval(time("23:22:38.000Z"), time("23:42:38.000Z")), "overlap": interval(time("23:22:38.000Z"), time("23:42:38.000Z")) }
+{ "tbin": interval(time("22:30:00.000Z"), time("00:00:00.000Z")), "interval": interval(time("23:30:00.000Z"), time("23:32:00.000Z")), "overlap": interval(time("23:30:00.000Z"), time("23:32:00.000Z")) }
+{ "tbin": interval(time("22:30:00.000Z"), time("00:00:00.000Z")), "interval": interval(time("23:49:23.938Z"), time("23:54:23.938Z")), "overlap": interval(time("23:49:23.938Z"), time("23:54:23.938Z")) }
+{ "tbin": interval(time("22:30:00.000Z"), time("00:00:00.000Z")), "interval": interval(time("23:49:33.938Z"), time("23:50:03.938Z")), "overlap": interval(time("23:49:33.938Z"), time("23:50:03.938Z")) }
+{ "tbin": interval(time("22:30:00.000Z"), time("00:00:00.000Z")), "interval": interval(time("23:58:17.038Z"), time("23:58:56.420Z")), "overlap": interval(time("23:58:17.038Z"), time("23:58:56.420Z")) }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_1/overlap_bins_gby_1.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_1/overlap_bins_gby_1.1.adm
index 9de6522..bd05dab 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_1/overlap_bins_gby_1.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_1/overlap_bins_gby_1.1.adm
@@ -1,11 +1,11 @@
-{ "timebin": interval-time("00:00:00.000Z, 01:30:00.000Z"), "count": 1, "total_ms": 3600000 }
-{ "timebin": interval-time("07:30:00.000Z, 09:00:00.000Z"), "count": 1, "total_ms": 4236062 }
-{ "timebin": interval-time("09:00:00.000Z, 10:30:00.000Z"), "count": 2, "total_ms": 8671961 }
-{ "timebin": interval-time("10:30:00.000Z, 12:00:00.000Z"), "count": 2, "total_ms": 6563938 }
-{ "timebin": interval-time("12:00:00.000Z, 13:30:00.000Z"), "count": 2, "total_ms": 7836062 }
-{ "timebin": interval-time("13:30:00.000Z, 15:00:00.000Z"), "count": 2, "total_ms": 10800000 }
-{ "timebin": interval-time("15:00:00.000Z, 16:30:00.000Z"), "count": 2, "total_ms": 8363938 }
-{ "timebin": interval-time("16:30:00.000Z, 18:00:00.000Z"), "count": 2, "total_ms": 5419000 }
-{ "timebin": interval-time("18:00:00.000Z, 19:30:00.000Z"), "count": 2, "total_ms": 10800000 }
-{ "timebin": interval-time("19:30:00.000Z, 21:00:00.000Z"), "count": 2, "total_ms": 5128039 }
-{ "timebin": interval-time("22:30:00.000Z, 00:00:00.000Z"), "count": 5, "total_ms": 1689382 }
+{ "timebin": interval(time("00:00:00.000Z"), time("01:30:00.000Z")), "count": 1, "total_ms": 3600000 }
+{ "timebin": interval(time("07:30:00.000Z"), time("09:00:00.000Z")), "count": 1, "total_ms": 4236062 }
+{ "timebin": interval(time("09:00:00.000Z"), time("10:30:00.000Z")), "count": 2, "total_ms": 8671961 }
+{ "timebin": interval(time("10:30:00.000Z"), time("12:00:00.000Z")), "count": 2, "total_ms": 6563938 }
+{ "timebin": interval(time("12:00:00.000Z"), time("13:30:00.000Z")), "count": 2, "total_ms": 7836062 }
+{ "timebin": interval(time("13:30:00.000Z"), time("15:00:00.000Z")), "count": 2, "total_ms": 10800000 }
+{ "timebin": interval(time("15:00:00.000Z"), time("16:30:00.000Z")), "count": 2, "total_ms": 8363938 }
+{ "timebin": interval(time("16:30:00.000Z"), time("18:00:00.000Z")), "count": 2, "total_ms": 5419000 }
+{ "timebin": interval(time("18:00:00.000Z"), time("19:30:00.000Z")), "count": 2, "total_ms": 10800000 }
+{ "timebin": interval(time("19:30:00.000Z"), time("21:00:00.000Z")), "count": 2, "total_ms": 5128039 }
+{ "timebin": interval(time("22:30:00.000Z"), time("00:00:00.000Z")), "count": 5, "total_ms": 1689382 }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_3/overlap_bins_gby_3.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_3/overlap_bins_gby_3.1.adm
index c1ffd9b..28fa184 100644
--- a/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_3/overlap_bins_gby_3.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/temporal/overlap_bins_gby_3/overlap_bins_gby_3.1.adm
@@ -1,42 +1,42 @@
-{ "timebin": interval-time("10:27:00.000Z, 10:28:00.000Z"), "subgroups": [ { "subgid": "Email", "item_count": 2 }, { "subgid": "Facebook", "item_count": 2 } ] }
-{ "timebin": interval-time("10:28:00.000Z, 10:29:00.000Z"), "subgroups": [ { "subgid": "Facebook", "item_count": 1 } ] }
-{ "timebin": interval-time("10:29:00.000Z, 10:30:00.000Z"), "subgroups": [ { "subgid": "Email", "item_count": 1 }, { "subgid": "Facebook", "item_count": 2 } ] }
-{ "timebin": interval-time("10:30:00.000Z, 10:31:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:31:00.000Z, 10:32:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:32:00.000Z, 10:33:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:33:00.000Z, 10:34:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:34:00.000Z, 10:35:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:35:00.000Z, 10:36:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:36:00.000Z, 10:37:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:37:00.000Z, 10:38:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:38:00.000Z, 10:39:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:39:00.000Z, 10:40:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:40:00.000Z, 10:41:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:41:00.000Z, 10:42:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:42:00.000Z, 10:43:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:43:00.000Z, 10:44:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:44:00.000Z, 10:45:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:45:00.000Z, 10:46:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:46:00.000Z, 10:47:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:47:00.000Z, 10:48:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:48:00.000Z, 10:49:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:49:00.000Z, 10:50:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:50:00.000Z, 10:51:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:51:00.000Z, 10:52:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:52:00.000Z, 10:53:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:53:00.000Z, 10:54:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:54:00.000Z, 10:55:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:55:00.000Z, 10:56:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:56:00.000Z, 10:57:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:57:00.000Z, 10:58:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:58:00.000Z, 10:59:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("10:59:00.000Z, 11:00:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:00:00.000Z, 11:01:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:01:00.000Z, 11:02:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:02:00.000Z, 11:03:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:03:00.000Z, 11:04:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:04:00.000Z, 11:05:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:05:00.000Z, 11:06:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:06:00.000Z, 11:07:00.000Z"), "subgroups": [  ] }
-{ "timebin": interval-time("11:07:00.000Z, 11:08:00.000Z"), "subgroups": [ { "subgid": "Email", "item_count": 2 } ] }
-{ "timebin": interval-time("11:08:00.000Z, 11:09:00.000Z"), "subgroups": [  ] }
+{ "timebin": interval(time("10:27:00.000Z"), time("10:28:00.000Z")), "subgroups": [ { "subgid": "Email", "item_count": 2 }, { "subgid": "Facebook", "item_count": 2 } ] }
+{ "timebin": interval(time("10:28:00.000Z"), time("10:29:00.000Z")), "subgroups": [ { "subgid": "Facebook", "item_count": 1 } ] }
+{ "timebin": interval(time("10:29:00.000Z"), time("10:30:00.000Z")), "subgroups": [ { "subgid": "Email", "item_count": 1 }, { "subgid": "Facebook", "item_count": 2 } ] }
+{ "timebin": interval(time("10:30:00.000Z"), time("10:31:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:31:00.000Z"), time("10:32:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:32:00.000Z"), time("10:33:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:33:00.000Z"), time("10:34:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:34:00.000Z"), time("10:35:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:35:00.000Z"), time("10:36:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:36:00.000Z"), time("10:37:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:37:00.000Z"), time("10:38:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:38:00.000Z"), time("10:39:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:39:00.000Z"), time("10:40:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:40:00.000Z"), time("10:41:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:41:00.000Z"), time("10:42:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:42:00.000Z"), time("10:43:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:43:00.000Z"), time("10:44:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:44:00.000Z"), time("10:45:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:45:00.000Z"), time("10:46:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:46:00.000Z"), time("10:47:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:47:00.000Z"), time("10:48:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:48:00.000Z"), time("10:49:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:49:00.000Z"), time("10:50:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:50:00.000Z"), time("10:51:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:51:00.000Z"), time("10:52:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:52:00.000Z"), time("10:53:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:53:00.000Z"), time("10:54:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:54:00.000Z"), time("10:55:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:55:00.000Z"), time("10:56:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:56:00.000Z"), time("10:57:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:57:00.000Z"), time("10:58:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:58:00.000Z"), time("10:59:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("10:59:00.000Z"), time("11:00:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:00:00.000Z"), time("11:01:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:01:00.000Z"), time("11:02:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:02:00.000Z"), time("11:03:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:03:00.000Z"), time("11:04:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:04:00.000Z"), time("11:05:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:05:00.000Z"), time("11:06:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:06:00.000Z"), time("11:07:00.000Z")), "subgroups": [  ] }
+{ "timebin": interval(time("11:07:00.000Z"), time("11:08:00.000Z")), "subgroups": [ { "subgid": "Email", "item_count": 2 } ] }
+{ "timebin": interval(time("11:08:00.000Z"), time("11:09:00.000Z")), "subgroups": [  ] }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast
index a25e02e..5bf9603 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast
@@ -108,7 +108,7 @@
     LiteralExpr [STRING] [interval]
     :
     OperatorExpr [
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
@@ -117,7 +117,7 @@
         ]
       ]
       =
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
@@ -235,7 +235,7 @@
     LiteralExpr [STRING] [interval2]
     :
     OperatorExpr [
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
@@ -244,7 +244,7 @@
         ]
       ]
       !=
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
         ]
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast
index 498aa79..e59b50f 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast
@@ -4,7 +4,7 @@
     LiteralExpr [STRING] [interval0]
     :
     OperatorExpr [
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
@@ -13,7 +13,7 @@
         ]
       ]
       >
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
         ]
@@ -27,7 +27,7 @@
     LiteralExpr [STRING] [interval1]
     :
     OperatorExpr [
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
         ]
@@ -36,7 +36,7 @@
         ]
       ]
       <
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
@@ -50,7 +50,7 @@
     LiteralExpr [STRING] [interval2]
     :
     OperatorExpr [
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
@@ -59,7 +59,7 @@
         ]
       ]
       >=
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
         ]
@@ -73,7 +73,7 @@
     LiteralExpr [STRING] [interval3]
     :
     OperatorExpr [
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
         ]
@@ -82,7 +82,7 @@
         ]
       ]
       <=
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
         ]
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast
index fd0e9c5..0382c4f 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast
@@ -2,182 +2,6 @@
 Query:
 RecordConstructor [
   (
-    LiteralExpr [STRING] [interval11]
-    :
-    FunctionCall test.interval-from-date@2[
-      FunctionCall test.date@1[
-        LiteralExpr [STRING] [2010-10-30]
-      ]
-      FunctionCall test.date@1[
-        LiteralExpr [STRING] [2012-10-21]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval12]
-    :
-    FunctionCall test.interval-from-date@2[
-      LiteralExpr [STRING] [2010-10-30]
-      FunctionCall test.date@1[
-        LiteralExpr [STRING] [2012-10-21]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval13]
-    :
-    FunctionCall test.interval-from-date@2[
-      FunctionCall test.date@1[
-        LiteralExpr [STRING] [2010-10-30]
-      ]
-      LiteralExpr [STRING] [2012-10-21]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval14]
-    :
-    FunctionCall test.interval-from-date@2[
-      LiteralExpr [STRING] [2010-10-30]
-      LiteralExpr [STRING] [2012-10-21]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval15]
-    :
-    FunctionCall test.interval-from-date@2[
-      LiteralExpr [NULL]
-      LiteralExpr [STRING] [2012-10-21]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval16]
-    :
-    FunctionCall test.interval-from-date@2[
-      LiteralExpr [STRING] [2010-10-30]
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval21]
-    :
-    FunctionCall test.interval-from-time@2[
-      FunctionCall test.time@1[
-        LiteralExpr [STRING] [03:04:05.678-11:00]
-      ]
-      FunctionCall test.time@1[
-        LiteralExpr [STRING] [232425267+0200]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval22]
-    :
-    FunctionCall test.interval-from-time@2[
-      LiteralExpr [STRING] [03:04:05.678-11:00]
-      FunctionCall test.time@1[
-        LiteralExpr [STRING] [232425267+0200]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval23]
-    :
-    FunctionCall test.interval-from-time@2[
-      FunctionCall test.time@1[
-        LiteralExpr [STRING] [03:04:05.678-11:00]
-      ]
-      LiteralExpr [STRING] [232425267+0200]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval24]
-    :
-    FunctionCall test.interval-from-time@2[
-      LiteralExpr [STRING] [03:04:05.678-11:00]
-      LiteralExpr [STRING] [232425267+0200]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval25]
-    :
-    FunctionCall test.interval-from-time@2[
-      LiteralExpr [NULL]
-      FunctionCall test.time@1[
-        LiteralExpr [STRING] [232425267+0200]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval26]
-    :
-    FunctionCall test.interval-from-time@2[
-      FunctionCall test.time@1[
-        LiteralExpr [STRING] [03:04:05.678-11:00]
-      ]
-      LiteralExpr [NULL]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval31]
-    :
-    FunctionCall test.interval-from-datetime@2[
-      FunctionCall test.datetime@1[
-        LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
-      ]
-      FunctionCall test.datetime@1[
-        LiteralExpr [STRING] [19991112T124935948-0700]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval32]
-    :
-    FunctionCall test.interval-from-datetime@2[
-      LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
-      FunctionCall test.datetime@1[
-        LiteralExpr [STRING] [19991112T124935948-0700]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval33]
-    :
-    FunctionCall test.interval-from-datetime@2[
-      FunctionCall test.datetime@1[
-        LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
-      ]
-      LiteralExpr [STRING] [19991112T124935948-0700]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval34]
-    :
-    FunctionCall test.interval-from-datetime@2[
-      LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
-      LiteralExpr [STRING] [19991112T124935948-0700]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval35]
-    :
-    FunctionCall test.interval-from-datetime@2[
-      LiteralExpr [NULL]
-      FunctionCall test.datetime@1[
-        LiteralExpr [STRING] [19991112T124935948-0700]
-      ]
-    ]
-  )
-  (
-    LiteralExpr [STRING] [interval36]
-    :
-    FunctionCall test.interval-from-datetime@2[
-      FunctionCall test.datetime@1[
-        LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
-      ]
-      LiteralExpr [NULL]
-    ]
-  )
-  (
     LiteralExpr [STRING] [interval41]
     :
     FunctionCall test.interval-start-from-date@2[
@@ -357,4 +181,100 @@
       LiteralExpr [NULL]
     ]
   )
-]
+  (
+    LiteralExpr [STRING] [interval71]
+    :
+    FunctionCall test.interval@2[
+      FunctionCall test.date@1[
+        LiteralExpr [STRING] [2010-10-30]
+      ]
+      FunctionCall test.date@1[
+        LiteralExpr [STRING] [2012-10-21]
+      ]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval72]
+    :
+    FunctionCall test.interval@2[
+      LiteralExpr [NULL]
+      FunctionCall test.date@1[
+        LiteralExpr [STRING] [2012-10-21]
+      ]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval73]
+    :
+    FunctionCall test.interval@2[
+      FunctionCall test.date@1[
+        LiteralExpr [STRING] [2010-10-30]
+      ]
+      LiteralExpr [NULL]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval74]
+    :
+    FunctionCall test.interval@2[
+      FunctionCall test.time@1[
+        LiteralExpr [STRING] [03:04:05.678-11:00]
+      ]
+      FunctionCall test.time@1[
+        LiteralExpr [STRING] [232425267+0200]
+      ]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval75]
+    :
+    FunctionCall test.interval@2[
+      LiteralExpr [NULL]
+      FunctionCall test.time@1[
+        LiteralExpr [STRING] [232425267+0200]
+      ]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval76]
+    :
+    FunctionCall test.interval@2[
+      FunctionCall test.time@1[
+        LiteralExpr [STRING] [03:04:05.678-11:00]
+      ]
+      LiteralExpr [NULL]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval77]
+    :
+    FunctionCall test.interval@2[
+      FunctionCall test.datetime@1[
+        LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
+      ]
+      FunctionCall test.datetime@1[
+        LiteralExpr [STRING] [19991112T124935948-0700]
+      ]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval78]
+    :
+    FunctionCall test.interval@2[
+      LiteralExpr [NULL]
+      FunctionCall test.datetime@1[
+        LiteralExpr [STRING] [19991112T124935948-0700]
+      ]
+    ]
+  )
+  (
+    LiteralExpr [STRING] [interval79]
+    :
+    FunctionCall test.interval@2[
+      FunctionCall test.datetime@1[
+        LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
+      ]
+      LiteralExpr [NULL]
+    ]
+  )
+]
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast
index da3708c..f3014f0 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast
@@ -5,11 +5,13 @@
     LiteralExpr [STRING] [start1]
     :
     FunctionCall test.get-interval-start@1[
-      FunctionCall test.interval-from-date@2[
+      FunctionCall test.interval@2[
         FunctionCall test.date@1[
           LiteralExpr [STRING] [2010-10-30]
         ]
-        LiteralExpr [STRING] [2013-04-01]
+        FunctionCall test.date@1[
+          LiteralExpr [STRING] [2013-04-01]
+        ]
       ]
     ]
   )
@@ -17,11 +19,13 @@
     LiteralExpr [STRING] [end1]
     :
     FunctionCall test.get-interval-end@1[
-      FunctionCall test.interval-from-date@2[
+      FunctionCall test.interval@2[
         FunctionCall test.date@1[
           LiteralExpr [STRING] [2010-10-30]
         ]
-        LiteralExpr [STRING] [2013-04-01]
+        FunctionCall test.date@1[
+          LiteralExpr [STRING] [2013-04-01]
+        ]
       ]
     ]
   )
@@ -29,8 +33,10 @@
     LiteralExpr [STRING] [start2]
     :
     FunctionCall test.get-interval-start@1[
-      FunctionCall test.interval-from-time@2[
-        LiteralExpr [STRING] [08:09:10.234Z]
+      FunctionCall test.interval@2[
+        FunctionCall test.time@1[
+          LiteralExpr [STRING] [08:09:10.234Z]
+        ]
         FunctionCall test.time@1[
           LiteralExpr [STRING] [203040567+0800]
         ]
@@ -41,8 +47,10 @@
     LiteralExpr [STRING] [end2]
     :
     FunctionCall test.get-interval-end@1[
-      FunctionCall test.interval-from-time@2[
-        LiteralExpr [STRING] [08:09:10.234Z]
+      FunctionCall test.interval@2[
+        FunctionCall test.time@1[
+          LiteralExpr [STRING] [08:09:10.234Z]
+        ]
         FunctionCall test.time@1[
           LiteralExpr [STRING] [203040567+0800]
         ]
@@ -53,8 +61,10 @@
     LiteralExpr [STRING] [start3]
     :
     FunctionCall test.get-interval-start@1[
-      FunctionCall test.interval-from-datetime@2[
-        LiteralExpr [STRING] [2009-09-01T00:00:00.000+08:00]
+      FunctionCall test.interval@2[
+        FunctionCall test.datetime@1[
+          LiteralExpr [STRING] [2009-09-01T00:00:00.000+08:00]
+        ]
         FunctionCall test.datetime-from-date-time@2[
           FunctionCall test.date@1[
             LiteralExpr [STRING] [2013-04-04]
@@ -70,8 +80,10 @@
     LiteralExpr [STRING] [end3]
     :
     FunctionCall test.get-interval-end@1[
-      FunctionCall test.interval-from-datetime@2[
-        LiteralExpr [STRING] [2009-09-01T00:00:00.000+08:00]
+      FunctionCall test.interval@2[
+        FunctionCall test.datetime@1[
+          LiteralExpr [STRING] [2009-09-01T00:00:00.000+08:00]
+        ]
         FunctionCall test.datetime-from-date-time@2[
           FunctionCall test.date@1[
             LiteralExpr [STRING] [2013-04-04]
@@ -83,4 +95,4 @@
       ]
     ]
   )
-]
+]
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast
index 0ab1988..6d2d197 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast
@@ -5,9 +5,13 @@
     LiteralExpr [STRING] [dr1]
     :
     FunctionCall test.duration-from-interval@1[
-      FunctionCall test.interval-from-date@2[
-        LiteralExpr [STRING] [2010-10-30]
-        LiteralExpr [STRING] [2010-12-21]
+      FunctionCall test.interval@2[
+        FunctionCall test.date@1[
+          LiteralExpr [STRING] [2010-10-30]
+        ]
+        FunctionCall test.date@1[
+          LiteralExpr [STRING] [2010-12-21]
+        ]
       ]
     ]
   )
@@ -15,9 +19,13 @@
     LiteralExpr [STRING] [dr2]
     :
     FunctionCall test.duration-from-interval@1[
-      FunctionCall test.interval-from-datetime@2[
-        LiteralExpr [STRING] [2012-06-26T01:01:01.111]
-        LiteralExpr [STRING] [2012-07-27T02:02:02.222]
+      FunctionCall test.interval@2[
+        FunctionCall test.datetime@1[
+          LiteralExpr [STRING] [2012-06-26T01:01:01.111]
+        ]
+        FunctionCall test.datetime@1[
+          LiteralExpr [STRING] [2012-07-27T02:02:02.222]
+        ]
       ]
     ]
   )
@@ -25,9 +33,13 @@
     LiteralExpr [STRING] [dr3]
     :
     FunctionCall test.duration-from-interval@1[
-      FunctionCall test.interval-from-time@2[
-        LiteralExpr [STRING] [12:32:38]
-        LiteralExpr [STRING] [20:29:20]
+      FunctionCall test.interval@2[
+        FunctionCall test.time@1[
+          LiteralExpr [STRING] [12:32:38]
+        ]
+        FunctionCall test.time@1[
+          LiteralExpr [STRING] [20:29:20]
+        ]
       ]
     ]
   )
@@ -38,4 +50,4 @@
       LiteralExpr [NULL]
     ]
   )
-]
+]
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast
index 72400ac..8fb6da7 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast
@@ -5,7 +5,7 @@
     LiteralExpr [STRING] [overlap1]
     :
     FunctionCall null.get-overlapping-interval@2[
-      FunctionCall null.interval-from-time@2[
+      FunctionCall null.interval@2[
         FunctionCall null.time@1[
           LiteralExpr [STRING] [11:23:39]
         ]
@@ -13,7 +13,7 @@
           LiteralExpr [STRING] [18:27:19]
         ]
       ]
-      FunctionCall null.interval-from-time@2[
+      FunctionCall null.interval@2[
         FunctionCall null.time@1[
           LiteralExpr [STRING] [12:23:39]
         ]
@@ -27,7 +27,7 @@
     LiteralExpr [STRING] [overlap2]
     :
     FunctionCall null.get-overlapping-interval@2[
-      FunctionCall null.interval-from-time@2[
+      FunctionCall null.interval@2[
         FunctionCall null.time@1[
           LiteralExpr [STRING] [12:23:39]
         ]
@@ -35,7 +35,7 @@
           LiteralExpr [STRING] [18:27:19]
         ]
       ]
-      FunctionCall null.interval-from-time@2[
+      FunctionCall null.interval@2[
         FunctionCall null.time@1[
           LiteralExpr [STRING] [07:19:39]
         ]
@@ -49,7 +49,7 @@
     LiteralExpr [STRING] [overlap3]
     :
     FunctionCall null.get-overlapping-interval@2[
-      FunctionCall null.interval-from-date@2[
+      FunctionCall null.interval@2[
         FunctionCall null.date@1[
           LiteralExpr [STRING] [1980-11-30]
         ]
@@ -57,7 +57,7 @@
           LiteralExpr [STRING] [1999-09-09]
         ]
       ]
-      FunctionCall null.interval-from-date@2[
+      FunctionCall null.interval@2[
         FunctionCall null.date@1[
           LiteralExpr [STRING] [2013-01-01]
         ]
@@ -71,7 +71,7 @@
     LiteralExpr [STRING] [overlap4]
     :
     FunctionCall null.get-overlapping-interval@2[
-      FunctionCall null.interval-from-date@2[
+      FunctionCall null.interval@2[
         FunctionCall null.date@1[
           LiteralExpr [STRING] [1980-11-30]
         ]
@@ -79,7 +79,7 @@
           LiteralExpr [STRING] [2099-09-09]
         ]
       ]
-      FunctionCall null.interval-from-date@2[
+      FunctionCall null.interval@2[
         FunctionCall null.date@1[
           LiteralExpr [STRING] [2013-01-01]
         ]
@@ -93,7 +93,7 @@
     LiteralExpr [STRING] [overlap5]
     :
     FunctionCall null.get-overlapping-interval@2[
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [1844-03-03T11:19:39]
         ]
@@ -101,7 +101,7 @@
           LiteralExpr [STRING] [2000-10-30T18:27:19]
         ]
       ]
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [1989-03-04T12:23:39]
         ]
@@ -115,7 +115,7 @@
     LiteralExpr [STRING] [overlap6]
     :
     FunctionCall null.get-overlapping-interval@2[
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [1989-03-04T12:23:39]
         ]
@@ -123,7 +123,7 @@
           LiteralExpr [STRING] [2000-10-30T18:27:19]
         ]
       ]
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [1844-03-03T11:19:39]
         ]
@@ -134,4 +134,4 @@
     ]
   )
 ]
-]
+]
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast
index e85501d..f4e11c6 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast
@@ -2,21 +2,33 @@
 Query:
 LetVariable [ Name=itv1 ]
   :=
-  FunctionCall test.interval-from-date@2[
-    LiteralExpr [STRING] [2010-10-30]
-    LiteralExpr [STRING] [2010-12-21]
+  FunctionCall test.interval@2[
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2010-10-30]
+    ]
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2010-12-21]
+    ]
   ]
 LetVariable [ Name=itv2 ]
   :=
-  FunctionCall test.interval-from-date@2[
-    LiteralExpr [STRING] [2011-10-30]
-    LiteralExpr [STRING] [2012-10-21]
+  FunctionCall test.interval@2[
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2011-10-30]
+    ]
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2012-10-21]
+    ]
   ]
 LetVariable [ Name=itv3 ]
   :=
-  FunctionCall test.interval-from-date@2[
-    LiteralExpr [STRING] [2010-12-21]
-    LiteralExpr [STRING] [2013-01-01]
+  FunctionCall test.interval@2[
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2010-12-21]
+    ]
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2013-01-01]
+    ]
   ]
 LetVariable [ Name=blnBefore1 ]
   :=
@@ -44,21 +56,33 @@
   ]
 LetVariable [ Name=itv4 ]
   :=
-  FunctionCall test.interval-from-datetime@2[
-    LiteralExpr [STRING] [2012-06-26T01:01:01.111]
-    LiteralExpr [STRING] [2012-07-27T02:02:02.222]
+  FunctionCall test.interval@2[
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2012-06-26T01:01:01.111]
+    ]
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2012-07-27T02:02:02.222]
+    ]
   ]
 LetVariable [ Name=itv5 ]
   :=
-  FunctionCall test.interval-from-datetime@2[
-    LiteralExpr [STRING] [20120727T020202222]
-    LiteralExpr [STRING] [2013-08-08T03:03:03.333]
+  FunctionCall test.interval@2[
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [20120727T020202222]
+    ]
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2013-08-08T03:03:03.333]
+    ]
   ]
 LetVariable [ Name=itv6 ]
   :=
-  FunctionCall test.interval-from-datetime@2[
-    LiteralExpr [STRING] [19000707T020202222]
-    LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+  FunctionCall test.interval@2[
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [19000707T020202222]
+    ]
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+    ]
   ]
 LetVariable [ Name=blnMeet1 ]
   :=
@@ -86,21 +110,33 @@
   ]
 LetVariable [ Name=itv7 ]
   :=
-  FunctionCall test.interval-from-time@2[
-    LiteralExpr [STRING] [12:32:38]
-    LiteralExpr [STRING] [20:29:20]
+  FunctionCall test.interval@2[
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [12:32:38]
+    ]
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [20:29:20]
+    ]
   ]
 LetVariable [ Name=itv8 ]
   :=
-  FunctionCall test.interval-from-time@2[
-    LiteralExpr [STRING] [17:48:19]
-    LiteralExpr [STRING] [22:19:49]
+  FunctionCall test.interval@2[
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [17:48:19]
+    ]
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [22:19:49]
+    ]
   ]
 LetVariable [ Name=itv9 ]
   :=
-  FunctionCall test.interval-from-time@2[
-    LiteralExpr [STRING] [01:32:49]
-    LiteralExpr [STRING] [17:48:19]
+  FunctionCall test.interval@2[
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [01:32:49]
+    ]
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [17:48:19]
+    ]
   ]
 LetVariable [ Name=blnOverlaps1 ]
   :=
@@ -140,9 +176,13 @@
   ]
 LetVariable [ Name=itv10 ]
   :=
-  FunctionCall test.interval-from-date@2[
-    LiteralExpr [STRING] [2010-10-30]
-    LiteralExpr [STRING] [2010-11-30]
+  FunctionCall test.interval@2[
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2010-10-30]
+    ]
+    FunctionCall test.date@1[
+      LiteralExpr [STRING] [2010-11-30]
+    ]
   ]
 LetVariable [ Name=blnStarts1 ]
   :=
@@ -170,21 +210,33 @@
   ]
 LetVariable [ Name=itv10 ]
   :=
-  FunctionCall test.interval-from-datetime@2[
-    LiteralExpr [STRING] [19000707T020202222]
-    LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+  FunctionCall test.interval@2[
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [19000707T020202222]
+    ]
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+    ]
   ]
 LetVariable [ Name=itv11 ]
   :=
-  FunctionCall test.interval-from-datetime@2[
-    LiteralExpr [STRING] [19990707T020202222]
-    LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+  FunctionCall test.interval@2[
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [19990707T020202222]
+    ]
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+    ]
   ]
 LetVariable [ Name=itv12 ]
   :=
-  FunctionCall test.interval-from-datetime@2[
-    LiteralExpr [STRING] [-19990707T020202222]
-    LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+  FunctionCall test.interval@2[
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [-19990707T020202222]
+    ]
+    FunctionCall test.datetime@1[
+      LiteralExpr [STRING] [2013-08-07T03:03:03.333]
+    ]
   ]
 LetVariable [ Name=blnCovers1 ]
   :=
@@ -212,9 +264,13 @@
   ]
 LetVariable [ Name=itv11 ]
   :=
-  FunctionCall test.interval-from-time@2[
-    LiteralExpr [STRING] [19:00:00.009]
-    LiteralExpr [STRING] [20:29:20.000]
+  FunctionCall test.interval@2[
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [19:00:00.009]
+    ]
+    FunctionCall test.time@1[
+      LiteralExpr [STRING] [20:29:20.000]
+    ]
   ]
 LetVariable [ Name=blnEnds1 ]
   :=
@@ -406,4 +462,4 @@
     Variable [ Name=null3 ]
   )
 ]
-]
+]
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast
index 6d2e508..962d9ff 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast
@@ -4,7 +4,7 @@
     LiteralExpr [STRING] [timebins]
     :
     FunctionCall null.overlap-bins@3[
-      FunctionCall null.interval-from-time@2[
+      FunctionCall null.interval@2[
         FunctionCall null.time@1[
           LiteralExpr [STRING] [17:23:37]
         ]
@@ -24,7 +24,7 @@
     LiteralExpr [STRING] [datebins]
     :
     FunctionCall null.overlap-bins@3[
-      FunctionCall null.interval-from-date@2[
+      FunctionCall null.interval@2[
         FunctionCall null.date@1[
           LiteralExpr [STRING] [1984-03-17]
         ]
@@ -44,7 +44,7 @@
     LiteralExpr [STRING] [datetimebins]
     :
     FunctionCall null.overlap-bins@3[
-      FunctionCall null.interval-from-datetime@2[
+      FunctionCall null.interval@2[
         FunctionCall null.datetime@1[
           LiteralExpr [STRING] [1800-01-01T23:59:48.938]
         ]
diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast
index 5197186..645c82c 100644
--- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast
+++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast
@@ -73,7 +73,7 @@
 ]
 ]
 FROM [  FunctionCall multitask.overlap-bins@3[
-    FunctionCall multitask.interval-from-time@2[
+    FunctionCall multitask.interval@2[
       FunctionCall multitask.min@1[
         (
           SELECT ELEMENT [
diff --git a/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterix-app/src/test/resources/runtimets/testsuite.xml
index d593039..1c99e67 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -6297,11 +6297,6 @@
                 <output-dir compare="Text">time_functions</output-dir>
             </compilation-unit>
         </test-case>
-        <test-case FilePath="constructor">
-            <compilation-unit name="interval">
-                <output-dir compare="Text">interval</output-dir>
-            </compilation-unit>
-        </test-case>
         <test-case FilePath="temporal">
             <compilation-unit name="duration_comps">
                 <output-dir compare="Text">duration_comps</output-dir>
diff --git a/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index d56cdad..ba36184 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -68,7 +68,7 @@
             </compilation-unit>
         </test-case>
     </test-group>
-    <!-- 
+    <!--
     <test-group name="union">
         <test-case FilePath="union">
             <compilation-unit name="union">
@@ -6125,11 +6125,6 @@
                 <output-dir compare="Text">time_functions</output-dir>
             </compilation-unit>
         </test-case>
-        <test-case FilePath="constructor">
-            <compilation-unit name="interval">
-                <output-dir compare="Text">interval</output-dir>
-            </compilation-unit>
-        </test-case>
         <test-case FilePath="temporal">
             <compilation-unit name="duration_comps">
                 <output-dir compare="Text">duration_comps</output-dir>
diff --git a/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml b/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
index bb7128a..f21d7f7 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
@@ -68,7 +68,7 @@
             </compilation-unit>
         </test-case>
     </test-group>
-    <!-- 
+    <!--
     <test-group name="union">
         <test-case FilePath="union">
             <compilation-unit name="union">
@@ -6349,11 +6349,6 @@
                 <output-dir compare="AST">time_functions</output-dir>
             </compilation-unit>
         </test-case>
-        <test-case FilePath="constructor">
-            <compilation-unit name="interval">
-                <output-dir compare="AST">interval</output-dir>
-            </compilation-unit>
-        </test-case>
         <test-case FilePath="temporal">
             <compilation-unit name="duration_comps">
                 <output-dir compare="AST">duration_comps</output-dir>
diff --git a/asterix-doc/src/site/markdown/aql/allens.md b/asterix-doc/src/site/markdown/aql/allens.md
index 75fa218..ddf81a69 100644
--- a/asterix-doc/src/site/markdown/aql/allens.md
+++ b/asterix-doc/src/site/markdown/aql/allens.md
@@ -27,9 +27,9 @@
 
 ## <a id="AboutAllensRelations">About Allen's Relations</a> <font size="4"><a href="#toc">[Back to TOC]</a></font> ##
 
-AsterixDB supports Allen's relations over interval types. Allen's relations are also called Allen's interval algebra. There are totally 13 base relations described by this algebra, and all of them are supported in AsterixDB (note that `interval-equals` is supported by the `=` comparison symbol so there is no extra function for it). 
+AsterixDB supports Allen's relations over interval types. Allen's relations are also called Allen's interval algebra. There are totally 13 base relations described by this algebra, and all of them are supported in AsterixDB (note that `interval-equals` is supported by the `=` comparison symbol so there is no extra function for it).
 
-A detailed description of Allen's relations can be found from its [wikipedia entry](http://en.wikipedia.org/wiki/Allen's_interval_algebra). 
+A detailed description of Allen's relations can be found from its [wikipedia entry](http://en.wikipedia.org/wiki/Allen's_interval_algebra).
 
 ## <a id="AllensRelatonsFunctions">Allen's Relations Functions</a> <font size="4"><a href="#toc">[Back to TOC]</a></font> ##
 
@@ -40,19 +40,19 @@
         interval-before(interval1, interval2)
         interval-after(interval1, interval2)
 
- * These two functions check whether an interval happens before/after another interval. 
+ * These two functions check whether an interval happens before/after another interval.
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-before(interval1, interval2)` is true if and only if `interval1.end < interval2.start`, and `interval-after(interval1, interval2)` is true if and only if `interval1.start > interval2.end`. If any of the two inputs is `null`, `null` is returned.
 
  * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("2005-05-01", "2012-09-09")
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("2005-05-01"), date("2012-09-09"))
         return {"interval-before": interval-before($itv1, $itv2), "interval-after": interval-after($itv2, $itv1)}
-        
+
  * The expected result is:
 
         { "interval-before": true, "interval-after": true }
@@ -69,7 +69,7 @@
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-covers(interval1, interval2)` is true if and only if
 
         interval1.start <= interval2.start
@@ -84,14 +84,14 @@
 
  * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("2000-03-01", "2004-09-09")
-        let $itv3 := interval-from-date("2006-08-01", "2007-03-01")
-        let $itv4 := interval-from-date("2004-09-10", "2012-08-01")
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("2000-03-01"), date("2004-09-09"))
+        let $itv3 := interval(date("2006-08-01"), date("2007-03-01"))
+        let $itv4 := interval(date("2004-09-10"), date("2012-08-01"))
         return {"interval-covers": interval-covers($itv1, $itv2), "interval-covered-by": interval-covered-by($itv3, $itv4)}
-        
+
  * The expected result is:
- 
+
         { "interval-covers": true, "interval-covered-by": true }
 
 
@@ -106,7 +106,7 @@
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-overlaps(interval1, interval2)` is true if and only if
 
         interval1.start < interval2.start
@@ -125,15 +125,15 @@
 
  * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("2004-05-01", "2012-09-09")
-        let $itv3 := interval-from-date("2006-08-01", "2007-03-01")
-        let $itv4 := interval-from-date("2004-09-10", "2006-12-31")
-        return {"overlaps": interval-overlaps($itv1, $itv2), 
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("2004-05-01"), date("2012-09-09"))
+        let $itv3 := interval(date("2006-08-01"), date("2007-03-01"))
+        let $itv4 := interval(date("2004-09-10"), date("2006-12-31"))
+        return {"overlaps": interval-overlaps($itv1, $itv2),
                 "overlapped-by": interval-overlapped-by($itv3, $itv4)}
-        
+
  * The expected result is:
- 
+
         { "overlaps": true, "overlapped-by": true }
 
 
@@ -144,11 +144,11 @@
 
         interval-overlapping(interval1, interval2)
 
- * This functions check whether two intervals share any points with each other. 
+ * This functions check whether two intervals share any points with each other.
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-overlapping(interval1, interval2)` is true if
 
         (interval2.start >= interval1.start
@@ -161,15 +161,15 @@
 
  * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("2004-05-01", "2012-09-09")
-        let $itv3 := interval-from-date("2006-08-01", "2007-03-01")
-        let $itv4 := interval-from-date("2004-09-10", "2006-12-31")
-        return {"overlapping1": interval-overlapping($itv1, $itv2), 
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("2004-05-01"), date("2012-09-09"))
+        let $itv3 := interval(date("2006-08-01"), date("2007-03-01"))
+        let $itv4 := interval(date("2004-09-10"), date("2006-12-31"))
+        return {"overlapping1": interval-overlapping($itv1, $itv2),
                 "overlapping2": interval-overlapping($itv3, $itv4)}
-        
+
  * The expected result is:
- 
+
         { "overlapping1": true, "overlapping2": true }
 
 
@@ -180,23 +180,23 @@
         interval-meets(interval1, interval2)
         interval-met-by(interval1, interval2)
 
- * These two functions check whether an interval meets with another interval. 
+ * These two functions check whether an interval meets with another interval.
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-meets(interval1, interval2)` is true if and only if `interval1.end = interval2.start`, and `interval-met-by(interval1, interval2)` is true if and only if `interval1.start = interval2.end`. If any of the two inputs is `null`, `null` is returned.
 
  * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("2005-01-01", "2012-09-09")
-        let $itv3 := interval-from-date("2006-08-01", "2007-03-01")
-        let $itv4 := interval-from-date("2004-09-10", "2006-08-01")
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("2005-01-01"), date("2012-09-09"))
+        let $itv3 := interval(date("2006-08-01"), date("2007-03-01"))
+        let $itv4 := interval(date("2004-09-10"), date("2006-08-01"))
         return {"meets": interval-meets($itv1, $itv2), "metby": interval-met-by($itv3, $itv4)}
 
  * The expected result is:
- 
+
         { "meets": true, "metby": true }
 
 
@@ -211,7 +211,7 @@
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-starts(interval1, interval2)` returns true if and only if
 
         interval1.start = interval2.start
@@ -226,14 +226,14 @@
 
  * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("2000-01-01", "2012-09-09")
-        let $itv3 := interval-from-date("2006-08-01", "2007-03-01")
-        let $itv4 := interval-from-date("2006-08-01", "2006-08-01")
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("2000-01-01"), date("2012-09-09"))
+        let $itv3 := interval(date("2006-08-01"), date("2007-03-01"))
+        let $itv4 := interval(date("2006-08-01"), date("2006-08-02"))
         return {"interval-starts": interval-starts($itv1, $itv2), "interval-started-by": interval-started-by($itv3, $itv4)}
 
  * The expected result is:
- 
+
         { "interval-starts": true, "interval-started-by": true }
 
 
@@ -248,7 +248,7 @@
  * Arguments:
     * `interval1`, `interval2`: two intervals to be compared
  * Return Value:
-   
+
     A `boolean` value. Specifically, `interval-ends(interval1, interval2)` returns true if and only if
 
         interval1.end = interval2.end
@@ -263,12 +263,12 @@
 
 * Examples:
 
-        let $itv1 := interval-from-date("2000-01-01", "2005-01-01")
-        let $itv2 := interval-from-date("1998-01-01", "2005-01-01")
-        let $itv3 := interval-from-date("2006-08-01", "2007-03-01")
-        let $itv4 := interval-from-date("2006-09-10", "2007-03-01")
+        let $itv1 := interval(date("2000-01-01"), date("2005-01-01"))
+        let $itv2 := interval(date("1998-01-01"), date("2005-01-01"))
+        let $itv3 := interval(date("2006-08-01"), date("2007-03-01"))
+        let $itv4 := interval(date("2006-09-10"), date("2007-03-01"))
         return {"interval-ends": interval-ends($itv1, $itv2), "interval-ended-by": interval-ended-by($itv3, $itv4) }
-        
+
 * The expected result is:
 
         { "interval-ends": true, "interval-ended-by": true }
diff --git a/asterix-doc/src/site/markdown/aql/datamodel.md b/asterix-doc/src/site/markdown/aql/datamodel.md
index 323e913..59ef5c9 100644
--- a/asterix-doc/src/site/markdown/aql/datamodel.md
+++ b/asterix-doc/src/site/markdown/aql/datamodel.md
@@ -293,15 +293,15 @@
 
  * Example:
 
-        let $v1 := interval-from-date(date("2013-01-01"), date("20130505"))
-        let $v2 := interval-from-time(time("00:01:01"), time("213901049+0800"))
-        let $v3 := interval-from-datetime(datetime("2013-01-01T00:01:01"), datetime("20130505T213901049+0800"))
+        let $v1 := interval(date("2013-01-01"), date("20130505"))
+        let $v2 := interval(time("00:01:01"), time("213901049+0800"))
+        let $v3 := interval(datetime("2013-01-01T00:01:01"), datetime("20130505T213901049+0800"))
         return { "v1": $v1, "v2": $v2, "v3": $v3 }
 
 
  * The expected result is:
 
-        { "v1": interval-date("2013-01-01, 2013-05-05"), "v2": interval-time("00:01:01.000Z, 13:39:01.049Z"), "v3": interval-datetime("2013-01-01T00:01:01.000Z, 2013-05-05T13:39:01.049Z") }
+        { "v1": interval(date("2013-01-01"), date("2013-05-05")), "v2": interval(time("00:01:01.000Z"), time("13:39:01.049Z")), "v3": interval(datetime("2013-01-01T00:01:01.000Z"), datetime("2013-05-05T13:39:01.049Z")) }
 
 ### <a id="PrimitiveTypesUUID">UUID</a><font size="4"><a href="#toc">[Back to TOC]</a></font> ###
 `uuid` represents a UUID value, which stands for Universally unique identifier. It is defined by a canonical format using hexadecimal text with inserted hyphen characters. (E.g.: 5a28ce1e-6a74-4201-9e8f-683256e5706f). This type is generally used to store auto-generated primary key values.
diff --git a/asterix-doc/src/site/markdown/aql/functions.md b/asterix-doc/src/site/markdown/aql/functions.md
index 1907689..4edf2b6 100644
--- a/asterix-doc/src/site/markdown/aql/functions.md
+++ b/asterix-doc/src/site/markdown/aql/functions.md
@@ -2040,11 +2040,11 @@
 
  * The expected result is:
 
-        { "overlap1": interval-time("12:23:39.000Z, 18:27:19.000Z"),
+        { "overlap1": interval(time("12:23:39.000Z"), time("18:27:19.000Z")),
           "overlap2": null,
           "overlap3": null,
-          "overlap4": interval-date("2013-01-01, 2014-01-01"),
-          "overlap5": interval-datetime("1989-03-04T12:23:39.000Z, 2000-10-30T18:27:19.000Z"),
+          "overlap4": interval(date("2013-01-01"), date("2014-01-01")),
+          "overlap5": interval(datetime("1989-03-04T12:23:39.000Z"), datetime("2000-10-30T18:27:19.000Z")),
           "overlap6": null }
 
 
@@ -2079,83 +2079,17 @@
         let $c3 := time("12:23:34.930+07:00")
 
         return { "bin1": interval-bin($c1, date("1990-01-01"), year-month-duration("P1Y")),
-         "bin2": interval-bin($c2, datetime("1990-01-01T00:00:00.000Z"), year-month-duration("P6M")),
-         "bin3": interval-bin($c3, time("00:00:00"), day-time-duration("PD1M")),
-         "bin4": interval-bin($c2, datetime("2013-01-01T00:00:00.000"), day-time-duration("PT24H"))
-       }
+          "bin2": interval-bin($c2, datetime("1990-01-01T00:00:00.000Z"), year-month-duration("P6M")),
+          "bin3": interval-bin($c3, time("00:00:00"), day-time-duration("PT1M")),
+          "bin4": interval-bin($c2, datetime("2013-01-01T00:00:00.000"), day-time-duration("PT24H"))
+        }
 
    * The expected result is:
 
-        { "bin1": interval-date("2010-01-01, 2011-01-01"),
-          "bin2": interval-datetime("-1987-07-01T00:00:00.000Z, -1986-01-01T00:00:00.000Z"),
-          "bin3": interval-time("05:23:00.000Z, 05:24:00.000Z"),
-          "bin4": interval-datetime("-1987-11-19T00:00:00.000Z, -1987-11-20T00:00:00.000Z")}
-
-
-### interval-from-date ###
- * Syntax:
-
-        interval-from-date(string1, string2)
-
- * Constructor function for the `interval` type by parsing two date strings.
- * Arguments:
-    * `string1` : The `string` value representing the starting date.
-    * `string2` : The `string` value representing the ending date.
- * Return Value:
-    * An `interval` value between the two dates.
-
- * Example:
-
-        {"date-interval": interval-from-date("2012-01-01", "2013-04-01")}
-
-
- * The expected result is:
-
-        { "date-interval": interval-date("2012-01-01, 2013-04-01") }
-
-
-### interval-from-time ###
- * Syntax:
-
-        interval-from-time(string1, string2)
-
- * Constructor function for the `interval` type by parsing two time strings.
- * Arguments:
-    * `string1` : The `string` value representing the starting time.
-    * `string2` : The `string` value representing the ending time.
- * Return Value:
-    * An `interval` value between the two times.
-
- * Example:
-
-        {"time-interval": interval-from-time("12:23:34.456Z", "233445567+0800")}
-
-
- * The expected result is:
-
-        { "time-interval": interval-time("12:23:34.456Z, 15:34:45.567Z") }
-
-
-### interval-from-datetime ###
- * Syntax:
-
-        interval-from-datetime(string1, string2)
-
- * Constructor function for `interval` type by parsing two datetime strings.
- * Arguments:
-    * `string1` : The `string` value representing the starting datetime.
-    * `string2` : The `string` value representing the ending datetime.
- * Return Value:
-    * An `interval` value between the two datetimes.
-
- * Example:
-
-        {"datetime-interval": interval-from-datetime("2012-01-01T12:23:34.456+08:00", "20130401T153445567Z")}
-
-
- * The expected result is:
-
-        { "datetime-interval": interval-datetime("2012-01-01T04:23:34.456Z, 2013-04-01T15:34:45.567Z") }
+        { "bin1": interval(date("2010-01-01"), date("2011-01-01")),
+          "bin2": interval(datetime("-1987-07-01T00:00:00.000Z"), datetime("-1986-01-01T00:00:00.000Z")),
+          "bin3": interval(time("05:23:00.000Z"), time("05:24:00.000Z")),
+          "bin4": interval(datetime("-1987-11-19T00:00:00.000Z"), datetime("-1987-11-20T00:00:00.000Z")) }
 
 
 ### interval-start-from-date/time/datetime ###
@@ -2179,7 +2113,9 @@
 
  * The expectecd result is:
 
-        { "interval1": interval-date("1984-01-01, 1985-01-01"), "interval2": interval-time("02:23:28.394Z, 05:47:28.394Z"), "interval3": interval-datetime("1999-09-09T09:09:09.999Z, 1999-12-09T09:09:09.999Z") }
+        { "interval1": interval(date("1984-01-01"), date("1985-01-01")),
+          "interval2": interval(time("02:23:28.394Z"), time("05:47:28.394Z")),
+          "interval3": interval(datetime("1999-09-09T09:09:09.999Z"), datetime("1999-12-09T09:09:09.999Z")) }
 
 
 ### overlap-bins ###
@@ -2214,9 +2150,16 @@
 
    * The expected result is:
 
-        { "timebins": [ interval-time("17:00:00.000Z, 17:30:00.000Z"), interval-time("17:30:00.000Z, 18:00:00.000Z"), interval-time("18:00:00.000Z, 18:30:00.000Z"), interval-time("18:30:00.000Z, 19:00:00.000Z") ],
-          "datebins": [ interval-date("1970-01-01, 1990-01-01"), interval-date("1990-01-01, 2010-01-01"), interval-date("2010-01-01, 2030-01-01") ],
-          "datetimebins": [ interval-datetime("1800-01-01T00:00:00.000Z, 1900-01-01T00:00:00.000Z"), interval-datetime("1900-01-01T00:00:00.000Z, 2000-01-01T00:00:00.000Z"), interval-datetime("2000-01-01T00:00:00.000Z, 2100-01-01T00:00:00.000Z") ] }
+        { "timebins": [ interval(time("17:00:00.000Z"), time("17:30:00.000Z")),
+              interval(time("17:30:00.000Z"), time("18:00:00.000Z")),
+              interval(time("18:00:00.000Z"), time("18:30:00.000Z")),
+              interval(time("18:30:00.000Z"), time("19:00:00.000Z")) ],
+          "datebins": [ interval(date("1970-01-01"), date("1990-01-01")),
+              interval(date("1990-01-01"), date("2010-01-01")),
+              interval(date("2010-01-01"), date("2030-01-01")) ],
+          "datetimebins": [ interval(datetime("1800-01-01T00:00:00.000Z"), datetime("1900-01-01T00:00:00.000Z")),
+              interval(datetime("1900-01-01T00:00:00.000Z"), datetime("2000-01-01T00:00:00.000Z")),
+              interval(datetime("2000-01-01T00:00:00.000Z"), datetime("2100-01-01T00:00:00.000Z")) ] }
 
 
 ## <a id="RecordFunctions">Record Functions</a> <font size="4"><a href="#toc">[Back to TOC]</a></font> ##
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
index d9a93ff..0fe2758 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
@@ -40,7 +40,9 @@
 import org.apache.asterix.external.api.IStreamDataParser;
 import org.apache.asterix.external.util.ExternalDataUtils;
 import org.apache.asterix.om.base.ABoolean;
+import org.apache.asterix.om.base.AMutableInterval;
 import org.apache.asterix.om.base.ANull;
+import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
 import org.apache.asterix.om.types.AOrderedListType;
 import org.apache.asterix.om.types.ARecordType;
 import org.apache.asterix.om.types.ATypeTag;
@@ -53,6 +55,7 @@
 import org.apache.asterix.om.util.container.IObjectPool;
 import org.apache.asterix.om.util.container.ListObjectPool;
 import org.apache.asterix.runtime.operators.file.adm.AdmLexer;
+import org.apache.asterix.runtime.operators.file.adm.AdmLexerException;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IMutableValueStorage;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
@@ -76,6 +79,8 @@
     private IObjectPool<IMutableValueStorage, ATypeTag> abvsBuilderPool = new ListObjectPool<IMutableValueStorage, ATypeTag>(
             new AbvsBuilderFactory());
 
+    protected final AMutableInterval aInterval = new AMutableInterval(0L, 0L, (byte) 0);
+
     private String mismatchErrorMessage = "Mismatch Type, expecting a value of type ";
     private String mismatchErrorMessage2 = " got a value of type ";
     private Map<String, String> configuration;
@@ -328,44 +333,14 @@
                 parseConstructor(ATypeTag.DATETIME, objectType, out);
                 break;
             }
-            case AdmLexer.TOKEN_INTERVAL_DATE_CONS: {
+            case AdmLexer.TOKEN_INTERVAL_CONS: {
                 if (checkType(ATypeTag.INTERVAL, objectType)) {
-                    if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
-                        if (admLexer.next() == AdmLexer.TOKEN_STRING_LITERAL) {
-                            parseDateInterval(admLexer.getLastTokenImage(), out);
-                            if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
-                                break;
-                            }
-                        }
-                    }
+                    objectType = getComplexType(objectType, ATypeTag.INTERVAL);
+                    parseInterval(ATypeTag.INTERVAL, objectType, out);
+                } else {
+                    throw new ParseException(mismatchErrorMessage + objectType.getTypeName());
                 }
-                throw new ParseException("Wrong interval data parsing for date interval.");
-            }
-            case AdmLexer.TOKEN_INTERVAL_TIME_CONS: {
-                if (checkType(ATypeTag.INTERVAL, objectType)) {
-                    if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
-                        if (admLexer.next() == AdmLexer.TOKEN_STRING_LITERAL) {
-                            parseTimeInterval(admLexer.getLastTokenImage(), out);
-                            if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
-                                break;
-                            }
-                        }
-                    }
-                }
-                throw new ParseException("Wrong interval data parsing for time interval.");
-            }
-            case AdmLexer.TOKEN_INTERVAL_DATETIME_CONS: {
-                if (checkType(ATypeTag.INTERVAL, objectType)) {
-                    if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
-                        if (admLexer.next() == AdmLexer.TOKEN_STRING_LITERAL) {
-                            parseDateTimeInterval(admLexer.getLastTokenImage(), out);
-                            if (admLexer.next() == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
-                                break;
-                            }
-                        }
-                    }
-                }
-                throw new ParseException("Wrong interval data parsing for datetime interval.");
+                break;
             }
             case AdmLexer.TOKEN_DURATION_CONS: {
                 parseConstructor(ATypeTag.DURATION, objectType, out);
@@ -408,17 +383,16 @@
                     objectType = getComplexType(objectType, ATypeTag.UNORDEREDLIST);
                     parseUnorderedList((AUnorderedListType) objectType, out);
                 } else {
-                    throw new ParseException(mismatchErrorMessage + objectType.getTypeTag());
+                    throw new ParseException(mismatchErrorMessage + objectType.getTypeName());
                 }
                 break;
             }
-
             case AdmLexer.TOKEN_START_ORDERED_LIST: {
                 if (checkType(ATypeTag.ORDEREDLIST, objectType)) {
                     objectType = getComplexType(objectType, ATypeTag.ORDEREDLIST);
                     parseOrderedList((AOrderedListType) objectType, out);
                 } else {
-                    throw new ParseException(mismatchErrorMessage + objectType.getTypeTag());
+                    throw new ParseException(mismatchErrorMessage + objectType.getTypeName());
                 }
                 break;
             }
@@ -427,7 +401,7 @@
                     objectType = getComplexType(objectType, ATypeTag.RECORD);
                     parseRecord((ARecordType) objectType, out);
                 } else {
-                    throw new ParseException(mismatchErrorMessage + objectType.getTypeTag());
+                    throw new ParseException(mismatchErrorMessage + objectType.getTypeName());
                 }
                 break;
             }
@@ -552,7 +526,6 @@
     }
 
     private void parseRecord(ARecordType recType, DataOutput out) throws IOException {
-
         ArrayBackedValueStorage fieldValueBuffer = getTempBuffer();
         ArrayBackedValueStorage fieldNameBuffer = getTempBuffer();
         IARecordBuilder recBuilder = getRecordBuilder();
@@ -693,6 +666,100 @@
         return -1;
     }
 
+    private void parseInterval(ATypeTag typeTag, IAType objectType, DataOutput out) throws IOException {
+        long start = 0, end = 0;
+        byte tag = 0;
+        int token = admLexer.next();
+        if (token == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
+            ATypeTag intervalType;
+
+            token = admLexer.next();
+            switch (token) {
+                case AdmLexer.TOKEN_DATE_CONS:
+                    intervalType = ATypeTag.DATE;
+                    break;
+                case AdmLexer.TOKEN_TIME_CONS:
+                    intervalType = ATypeTag.TIME;
+                    break;
+                case AdmLexer.TOKEN_DATETIME_CONS:
+                    intervalType = ATypeTag.DATETIME;
+                    break;
+                default:
+                    throw new ParseException("Unsupported interval type: " + AdmLexer.tokenKindToString(token) + ".");
+            }
+
+            // Interval
+            start = parseIntervalArgument(intervalType);
+            end = parseIntervalSecondArgument(token, intervalType);
+            tag = intervalType.serialize();
+        }
+
+        // Closing interval.
+        token = admLexer.next();
+        if (token == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
+            try {
+                aInterval.setValue(start, end, tag);
+            } catch (HyracksDataException e) {
+                throw new ParseException(e);
+            }
+        } else {
+            throw new ParseException("Interval was not closed.");
+        }
+        intervalSerde.serialize(aInterval, out);
+    }
+
+    private long parseIntervalSecondArgument(int startToken, ATypeTag parseType) throws IOException {
+        int token = admLexer.next();
+        if (token == AdmLexer.TOKEN_COMMA) {
+            token = admLexer.next();
+            if (token == startToken) {
+                return parseIntervalArgument(parseType);
+            } else {
+                throw new ParseException("The interval start and end point types do not match: "
+                        + AdmLexer.tokenKindToString(startToken) + " != " + AdmLexer.tokenKindToString(token));
+            }
+        } else {
+            throw new ParseException("Missing COMMA before interval end point.");
+        }
+    }
+
+    private long parseIntervalArgument(ATypeTag tag) throws IOException {
+        int token = admLexer.next();
+        if (token == AdmLexer.TOKEN_CONSTRUCTOR_OPEN) {
+            token = admLexer.next();
+            if (token == AdmLexer.TOKEN_STRING_LITERAL) {
+                long chrononTimeInMs = 0;
+                final String arg = admLexer.getLastTokenImage();
+                switch (tag) {
+                    case DATE:
+                        chrononTimeInMs += (parseDatePart(arg, 0, arg.length() - 1)
+                                / GregorianCalendarSystem.CHRONON_OF_DAY);
+                        break;
+                    case TIME:
+                        chrononTimeInMs += parseTimePart(arg, 0, arg.length() - 1);
+                        break;
+                    case DATETIME:
+                        int timeSeperatorOffsetInDatetimeString = arg.indexOf('T');
+                        if (timeSeperatorOffsetInDatetimeString < 0) {
+                            throw new ParseException(
+                                    "This can not be an instance of interval: missing T for a datetime value.");
+                        }
+                        chrononTimeInMs += parseDatePart(arg, 0, timeSeperatorOffsetInDatetimeString - 1);
+                        chrononTimeInMs += parseTimePart(arg, timeSeperatorOffsetInDatetimeString + 1,
+                                arg.length() - 1);
+                        break;
+                    default:
+                        throw new ParseException("Unsupported interval type: " + tag.name() + ".");
+                }
+                token = admLexer.next();
+                if (token == AdmLexer.TOKEN_CONSTRUCTOR_CLOSE) {
+                    return chrononTimeInMs;
+                }
+            }
+        }
+        throw new ParseException("Interval argument not properly constructed.");
+    }
+
     private void parseOrderedList(AOrderedListType oltype, DataOutput out) throws IOException {
         ArrayBackedValueStorage itemBuffer = getTempBuffer();
         OrderedListBuilder orderedListBuilder = (OrderedListBuilder) getOrderedListBuilder();
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java
index 20b4124..b10b9e9 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java
@@ -71,7 +71,6 @@
 import org.apache.asterix.om.base.temporal.ADurationParserFactory.ADurationParseOption;
 import org.apache.asterix.om.base.temporal.ATimeParserFactory;
 import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
-import org.apache.asterix.om.types.ATypeTag;
 import org.apache.asterix.om.types.BuiltinType;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
@@ -187,7 +186,7 @@
     protected final static ISerializerDeserializer<ALine> lineSerde = AqlSerializerDeserializerProvider.INSTANCE
             .getSerializerDeserializer(BuiltinType.ALINE);
     @SuppressWarnings("unchecked")
-    private static final ISerializerDeserializer<AInterval> intervalSerde = AqlSerializerDeserializerProvider.INSTANCE
+    protected static final ISerializerDeserializer<AInterval> intervalSerde = AqlSerializerDeserializerProvider.INSTANCE
             .getSerializerDeserializer(BuiltinType.AINTERVAL);
 
     protected String filename;
@@ -333,104 +332,7 @@
         binarySerde.serialize(aBinary, out);
     }
 
-    protected void parseDateTimeInterval(String interval, DataOutput out) throws HyracksDataException {
-        // the starting point for parsing (so for the accessor)
-        int startOffset = 0;
-        int endOffset, timeSeperatorOffsetInDatetimeString;
-
-        // Get the index for the comma
-        int commaIndex = interval.indexOf(',');
-        if (commaIndex < 1) {
-            throw new HyracksDataException("comma is missing for a string of interval");
-        }
-
-        endOffset = commaIndex - 1;
-        timeSeperatorOffsetInDatetimeString = interval.indexOf('T');
-
-        if (timeSeperatorOffsetInDatetimeString < 0) {
-            throw new HyracksDataException("This can not be an instance of interval: missing T for a datetime value.");
-        }
-
-        long chrononTimeInMsStart = parseDatePart(interval, startOffset, timeSeperatorOffsetInDatetimeString - 1);
-
-        chrononTimeInMsStart += parseTimePart(interval, timeSeperatorOffsetInDatetimeString + 1, endOffset);
-
-        // Interval End
-        startOffset = commaIndex + 1;
-        endOffset = interval.length() - 1;
-
-        timeSeperatorOffsetInDatetimeString = interval.indexOf('T', startOffset);
-
-        if (timeSeperatorOffsetInDatetimeString < 0) {
-            throw new HyracksDataException("This can not be an instance of interval: missing T for a datetime value.");
-        }
-
-        long chrononTimeInMsEnd = parseDatePart(interval, startOffset, timeSeperatorOffsetInDatetimeString - 1);
-
-        chrononTimeInMsEnd += parseTimePart(interval, timeSeperatorOffsetInDatetimeString + 1, endOffset);
-
-        aInterval.setValue(chrononTimeInMsStart, chrononTimeInMsEnd, ATypeTag.DATETIME.serialize());
-
-        intervalSerde.serialize(aInterval, out);
-    }
-
-    protected void parseTimeInterval(String interval, DataOutput out) throws HyracksDataException {
-        int startOffset = 0;
-        int endOffset;
-
-        // Get the index for the comma
-        int commaIndex = interval.indexOf(',');
-        if (commaIndex < 0) {
-            throw new HyracksDataException("comma is missing for a string of interval");
-        }
-
-        endOffset = commaIndex - 1;
-        // Interval Start
-        long chrononTimeInMsStart = parseTimePart(interval, startOffset, endOffset);
-
-        if (chrononTimeInMsStart < 0) {
-            chrononTimeInMsStart += GregorianCalendarSystem.CHRONON_OF_DAY;
-        }
-
-        // Interval End
-        startOffset = commaIndex + 1;
-        endOffset = interval.length() - 1;
-
-        long chrononTimeInMsEnd = parseTimePart(interval, startOffset, endOffset);
-        if (chrononTimeInMsEnd < 0) {
-            chrononTimeInMsEnd += GregorianCalendarSystem.CHRONON_OF_DAY;
-        }
-
-        aInterval.setValue(chrononTimeInMsStart, chrononTimeInMsEnd, ATypeTag.TIME.serialize());
-        intervalSerde.serialize(aInterval, out);
-    }
-
-    protected void parseDateInterval(String interval, DataOutput out) throws HyracksDataException {
-        // the starting point for parsing (so for the accessor)
-        int startOffset = 0;
-        int endOffset;
-
-        // Get the index for the comma
-        int commaIndex = interval.indexOf(',');
-        if (commaIndex < 1) {
-            throw new HyracksDataException("comma is missing for a string of interval");
-        }
-
-        endOffset = commaIndex - 1;
-        long chrononTimeInMsStart = parseDatePart(interval, startOffset, endOffset);
-
-        // Interval End
-        startOffset = commaIndex + 1;
-        endOffset = interval.length() - 1;
-
-        long chrononTimeInMsEnd = parseDatePart(interval, startOffset, endOffset);
-
-        aInterval.setValue((chrononTimeInMsStart / GregorianCalendarSystem.CHRONON_OF_DAY),
-                (chrononTimeInMsEnd / GregorianCalendarSystem.CHRONON_OF_DAY), ATypeTag.DATE.serialize());
-        intervalSerde.serialize(aInterval, out);
-    }
-
-    private long parseDatePart(String interval, int startOffset, int endOffset) throws HyracksDataException {
+    protected long parseDatePart(String interval, int startOffset, int endOffset) throws HyracksDataException {
 
         while (interval.charAt(endOffset) == '"' || interval.charAt(endOffset) == ' ') {
             endOffset--;
@@ -443,7 +345,7 @@
         return ADateParserFactory.parseDatePart(interval, startOffset, endOffset - startOffset + 1);
     }
 
-    private int parseTimePart(String interval, int startOffset, int endOffset) throws HyracksDataException {
+    protected int parseTimePart(String interval, int startOffset, int endOffset) throws HyracksDataException {
 
         while (interval.charAt(endOffset) == '"' || interval.charAt(endOffset) == ' ') {
             endOffset--;
diff --git a/asterix-external-data/src/main/resources/adm.grammar b/asterix-external-data/src/main/resources/adm.grammar
index 973c2b9..2626a31 100644
--- a/asterix-external-data/src/main/resources/adm.grammar
+++ b/asterix-external-data/src/main/resources/adm.grammar
@@ -47,9 +47,7 @@
 RECTANGLE_CONS = string(rectangle)
 CIRCLE_CONS    = string(circle)
 TIME_CONS      = string(time)
-INTERVAL_TIME_CONS      = string(interval-time)
-INTERVAL_DATE_CONS      = string(interval-date)
-INTERVAL_DATETIME_CONS  = string(interval-datetime)
+INTERVAL_CONS  = string(interval)
 YEAR_MONTH_DURATION_CONS = string(year-month-duration)
 DAY_TIME_DURATION_CONS   = string(day-time-duration)
 UUID_CONS      = string(uuid)
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/runtime/operator/file/ADMDataParserTest.java b/asterix-external-data/src/test/java/org/apache/asterix/runtime/operator/file/ADMDataParserTest.java
index 698e414..c6939c9 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/runtime/operator/file/ADMDataParserTest.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/runtime/operator/file/ADMDataParserTest.java
@@ -24,7 +24,9 @@
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.asterix.external.parser.ADMDataParser;
-import org.apache.asterix.om.base.AMutableInterval;
+import org.apache.asterix.om.base.AMutableDate;
+import org.apache.asterix.om.base.AMutableDateTime;
+import org.apache.asterix.om.base.AMutableTime;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -34,25 +36,23 @@
 
     @Test
     public void test() {
-        String[] dateIntervals = { "-9537-08-04, 9656-06-03", "-9537-04-04, 9656-06-04", "-9537-10-04, 9626-09-05" };
-        AMutableInterval[] parsedDateIntervals = new AMutableInterval[] {
-                new AMutableInterval(-4202630, 2807408, (byte) 17), new AMutableInterval(-4202752, 2807409, (byte) 17),
-                new AMutableInterval(-4202569, 2796544, (byte) 17), };
+        String[] dates = { "-9537-08-04", "9656-06-03", "-9537-04-04", "9656-06-04", "-9537-10-04", "9626-09-05" };
+        AMutableDate[] parsedDates = new AMutableDate[] { new AMutableDate(-4202630), new AMutableDate(2807408),
+                new AMutableDate(-4202752), new AMutableDate(2807409), new AMutableDate(-4202569),
+                new AMutableDate(2796544), };
 
-        String[] timeIntervals = { "12:04:45.689Z, 12:41:59.002Z", "12:10:45.169Z, 15:37:48.736Z",
-                "04:16:42.321Z, 12:22:56.816Z" };
-        AMutableInterval[] parsedTimeIntervals = new AMutableInterval[] {
-                new AMutableInterval(43485689, 45719002, (byte) 18),
-                new AMutableInterval(43845169, 56268736, (byte) 18),
-                new AMutableInterval(15402321, 44576816, (byte) 18), };
+        String[] times = { "12:04:45.689Z", "12:41:59.002Z", "12:10:45.169Z", "15:37:48.736Z", "04:16:42.321Z",
+                "12:22:56.816Z" };
+        AMutableTime[] parsedTimes = new AMutableTime[] { new AMutableTime(43485689), new AMutableTime(45719002),
+                new AMutableTime(43845169), new AMutableTime(56268736), new AMutableTime(15402321),
+                new AMutableTime(44576816), };
 
-        String[] dateTimeIntervals = { "-2640-10-11T17:32:15.675Z, 4104-02-01T05:59:11.902Z",
-                "0534-12-08T08:20:31.487Z, 6778-02-16T22:40:21.653Z",
-                "2129-12-12T13:18:35.758Z, 8647-07-01T13:10:19.691Z" };
-        AMutableInterval[] parsedDateTimeIntervals = new AMutableInterval[] {
-                new AMutableInterval(-145452954464325L, 67345192751902L, (byte) 16),
-                new AMutableInterval(-45286270768513L, 151729886421653L, (byte) 16),
-                new AMutableInterval(5047449515758L, 210721439419691L, (byte) 16) };
+        String[] dateTimes = { "-2640-10-11T17:32:15.675Z", "4104-02-01T05:59:11.902Z", "0534-12-08T08:20:31.487Z",
+                "6778-02-16T22:40:21.653Z", "2129-12-12T13:18:35.758Z", "8647-07-01T13:10:19.691Z" };
+        AMutableDateTime[] parsedDateTimes = new AMutableDateTime[] { new AMutableDateTime(-145452954464325L),
+                new AMutableDateTime(67345192751902L), new AMutableDateTime(-45286270768513L),
+                new AMutableDateTime(151729886421653L), new AMutableDateTime(5047449515758L),
+                new AMutableDateTime(210721439419691L) };
 
         Thread[] threads = new Thread[16];
         AtomicInteger errorCount = new AtomicInteger(0);
@@ -67,28 +67,28 @@
                     try {
                         int round = 0;
                         while (round++ < 10000) {
-                            // Test parseDateInterval.
-                            for (int index = 0; index < dateIntervals.length; ++index) {
-                                PA.invokeMethod(parser, "parseDateInterval(java.lang.String, java.io.DataOutput)",
-                                        dateIntervals[index], dos);
-                                AMutableInterval aInterval = (AMutableInterval) PA.getValue(parser, "aInterval");
-                                Assert.assertTrue(aInterval.equals(parsedDateIntervals[index]));
+                            // Test parseDate.
+                            for (int index = 0; index < dates.length; ++index) {
+                                PA.invokeMethod(parser, "parseDate(java.lang.String, java.io.DataOutput)",
+                                        dates[index], dos);
+                                AMutableDate aDate = (AMutableDate) PA.getValue(parser, "aDate");
+                                Assert.assertTrue(aDate.equals(parsedDates[index]));
                             }
 
-                            // Tests parseTimeInterval.
-                            for (int index = 0; index < timeIntervals.length; ++index) {
-                                PA.invokeMethod(parser, "parseTimeInterval(java.lang.String, java.io.DataOutput)",
-                                        timeIntervals[index], dos);
-                                AMutableInterval aInterval = (AMutableInterval) PA.getValue(parser, "aInterval");
-                                Assert.assertTrue(aInterval.equals(parsedTimeIntervals[index]));
+                            // Tests parseTime.
+                            for (int index = 0; index < times.length; ++index) {
+                                PA.invokeMethod(parser, "parseTime(java.lang.String, java.io.DataOutput)",
+                                        times[index], dos);
+                                AMutableTime aTime = (AMutableTime) PA.getValue(parser, "aTime");
+                                Assert.assertTrue(aTime.equals(parsedTimes[index]));
                             }
 
-                            // Tests parseDateTimeInterval.
-                            for (int index = 0; index < dateTimeIntervals.length; ++index) {
-                                PA.invokeMethod(parser, "parseDateTimeInterval(java.lang.String, java.io.DataOutput)",
-                                        dateTimeIntervals[index], dos);
-                                AMutableInterval aInterval = (AMutableInterval) PA.getValue(parser, "aInterval");
-                                Assert.assertTrue(aInterval.equals(parsedDateTimeIntervals[index]));
+                            // Tests parseDateTime.
+                            for (int index = 0; index < dateTimes.length; ++index) {
+                                PA.invokeMethod(parser, "parseDateTime(java.lang.String, java.io.DataOutput)",
+                                        dateTimes[index], dos);
+                                AMutableDateTime aDateTime = (AMutableDateTime) PA.getValue(parser, "aDateTime");
+                                Assert.assertTrue(aDateTime.equals(parsedDateTimes[index]));
                             }
                         }
                     } catch (Exception e) {
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalAscPartialBinaryComparatorFactory.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalAscPartialBinaryComparatorFactory.java
index 6efc7ff..bb96d5d 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalAscPartialBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalAscPartialBinaryComparatorFactory.java
@@ -18,7 +18,6 @@
  */
 package org.apache.asterix.dataflow.data.nontagged.comparators;
 
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
 import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
@@ -45,20 +44,14 @@
                 // The ascending interval comparator sorts intervals first by start point, then by end point.
                 // If the interval have the same point values, the final comparison orders the intervals by type
                 // (datetime, date, time).
-                int c = Long.compare(
-                        AInt64SerializerDeserializer.getLong(b1,
-                                s1 + AIntervalSerializerDeserializer.getIntervalStartOffset()),
-                        AInt64SerializerDeserializer.getLong(b2,
-                                s2 + AIntervalSerializerDeserializer.getIntervalStartOffset()));
+                int c = Long.compare(AIntervalSerializerDeserializer.getIntervalStart(b1, s1),
+                        AIntervalSerializerDeserializer.getIntervalStart(b2, s2));
                 if (c == 0) {
-                    c = Long.compare(
-                            AInt64SerializerDeserializer.getLong(b1,
-                                    s1 + AIntervalSerializerDeserializer.getIntervalEndOffset()),
-                            AInt64SerializerDeserializer.getLong(b2,
-                                    s2 + AIntervalSerializerDeserializer.getIntervalEndOffset()));
+                    c = Long.compare(AIntervalSerializerDeserializer.getIntervalEnd(b1, s1),
+                            AIntervalSerializerDeserializer.getIntervalEnd(b2, s2));
                     if (c == 0) {
-                        c = Byte.compare(b1[s1 + AIntervalSerializerDeserializer.getIntervalTagOffset()], b2[s2
-                                + AIntervalSerializerDeserializer.getIntervalTagOffset()]);
+                        c = Byte.compare(AIntervalSerializerDeserializer.getIntervalTimeType(b1, s1),
+                                AIntervalSerializerDeserializer.getIntervalTimeType(b2, s2));
                     }
                 }
                 return c;
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalDescPartialBinaryComparatorFactory.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalDescPartialBinaryComparatorFactory.java
index 9a09623..5ee553c 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalDescPartialBinaryComparatorFactory.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/comparators/AIntervalDescPartialBinaryComparatorFactory.java
@@ -18,7 +18,6 @@
  */
 package org.apache.asterix.dataflow.data.nontagged.comparators;
 
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
 import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
@@ -45,20 +44,14 @@
                 // The descending interval comparator sorts intervals first by end point, then by start point.
                 // If the interval have the same point values, the final comparison orders the intervals by type
                 // (time, date, datetime).
-                int c = Long.compare(
-                        AInt64SerializerDeserializer.getLong(b1,
-                                s1 + AIntervalSerializerDeserializer.getIntervalEndOffset()),
-                        AInt64SerializerDeserializer.getLong(b2,
-                                s2 + AIntervalSerializerDeserializer.getIntervalEndOffset()));
+                int c = Long.compare(AIntervalSerializerDeserializer.getIntervalEnd(b1, s1),
+                        AIntervalSerializerDeserializer.getIntervalEnd(b2, s2));
                 if (c == 0) {
-                    c = Long.compare(
-                            AInt64SerializerDeserializer.getLong(b1,
-                                    s1 + AIntervalSerializerDeserializer.getIntervalStartOffset()),
-                            AInt64SerializerDeserializer.getLong(b2,
-                                    s2 + AIntervalSerializerDeserializer.getIntervalStartOffset()));
+                    c = Long.compare(AIntervalSerializerDeserializer.getIntervalStart(b1, s1),
+                            AIntervalSerializerDeserializer.getIntervalStart(b2, s2));
                     if (c == 0) {
-                        c = Byte.compare(b1[s1 + AIntervalSerializerDeserializer.getIntervalTagOffset()],
-                                b2[s2 + AIntervalSerializerDeserializer.getIntervalTagOffset()]);
+                        c = Byte.compare(AIntervalSerializerDeserializer.getIntervalTimeType(b1, s1),
+                                AIntervalSerializerDeserializer.getIntervalTimeType(b2, s2));
                     }
                 }
                 // Since the comparisons are based on ascending order, the result is reversed.
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java
index 99c02e8..3c60cd2 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java
@@ -20,9 +20,9 @@
 
 import java.io.PrintStream;
 
-import org.apache.asterix.dataflow.data.nontagged.printers.PrintTools;
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt8SerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.EnumDeserializer;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.data.IPrinter;
 
@@ -42,29 +42,34 @@
      */
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
-        ps.print("interval");
+        ps.print("interval(");
 
-        short typetag = AInt8SerializerDeserializer.getByte(b, s + 1 + 8 * 2);
+        byte typetag = AIntervalSerializerDeserializer.getIntervalTimeType(b, s + 1);
+        int startOffset = AIntervalSerializerDeserializer.getIntervalStartOffset(b, s + 1) - 1;
+        int startSize = AIntervalSerializerDeserializer.getStartSize(b, s + 1);
+        int endOffset = AIntervalSerializerDeserializer.getIntervalEndOffset(b, s + 1) - 1;
+        int endSize = AIntervalSerializerDeserializer.getEndSize(b, s + 1);
 
-        if (typetag == ATypeTag.DATE.serialize()) {
-            ps.print("-date(\"");
-            PrintTools.printDateString(b, s + 4, 4, ps);
-            ps.print(", ");
-            PrintTools.printDateString(b, s + 12, 4, ps);
-        } else if (typetag == ATypeTag.TIME.serialize()) {
-            ps.print("-time(\"");
-            PrintTools.printTimeString(b, s + 4, 4, ps);
-            ps.print(", ");
-            PrintTools.printTimeString(b, s + 12, 4, ps);
-        } else if (typetag == ATypeTag.DATETIME.serialize()) {
-            ps.print("-datetime(\"");
-            PrintTools.printDateTimeString(b, s, 8, ps);
-            ps.print(", ");
-            PrintTools.printDateTimeString(b, s + 8, 8, ps);
-        } else {
-            throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
+        IPrinter timeInstancePrinter;
+        ATypeTag intervalType = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(typetag);
+        switch (intervalType) {
+            case DATE:
+                timeInstancePrinter = ADatePrinter.INSTANCE;
+                break;
+            case TIME:
+                timeInstancePrinter = ATimePrinter.INSTANCE;
+                break;
+            case DATETIME:
+                timeInstancePrinter = ADateTimePrinter.INSTANCE;
+                break;
+            default:
+                throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
         }
 
-        ps.print("\")");
+        timeInstancePrinter.print(b, startOffset, startSize, ps);
+        ps.print(", ");
+        timeInstancePrinter.print(b, endOffset, endSize, ps);
+
+        ps.print(")");
     }
 }
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AIntervalPrinter.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AIntervalPrinter.java
index e77ef94..3f8a647 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AIntervalPrinter.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AIntervalPrinter.java
@@ -20,8 +20,12 @@
 
 import java.io.PrintStream;
 
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt8SerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.ADatePrinter;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.ADateTimePrinter;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.ATimePrinter;
+import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.EnumDeserializer;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.data.IPrinter;
 
@@ -43,29 +47,32 @@
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
         ps.print("{ \"interval\": { \"start\": ");
 
-        short typetag = AInt8SerializerDeserializer.getByte(b, s + 1 + 8 * 2);
+        byte typetag = AIntervalSerializerDeserializer.getIntervalTimeType(b, s + 1);
+        int startOffset = AIntervalSerializerDeserializer.getIntervalStartOffset(b, s + 1) - 1;
+        int startSize = AIntervalSerializerDeserializer.getStartSize(b, s + 1);
+        int endOffset = AIntervalSerializerDeserializer.getIntervalEndOffset(b, s + 1) - 1;
+        int endSize = AIntervalSerializerDeserializer.getEndSize(b, s + 1);
 
         IPrinter timeInstancePrinter;
-
-        if (typetag == ATypeTag.DATE.serialize()) {
-            timeInstancePrinter = ADatePrinter.INSTANCE;
-            ((ADatePrinter) timeInstancePrinter).print(b, s + 4, 4, ps);
-            ps.print(", \"end\": ");
-            ((ADatePrinter) timeInstancePrinter).print(b, s + 12, 4, ps);
-        } else if (typetag == ATypeTag.TIME.serialize()) {
-            timeInstancePrinter = ATimePrinter.INSTANCE;
-            ((ATimePrinter) timeInstancePrinter).print(b, s + 4, 4, ps);
-            ps.print(", \"end\": ");
-            ((ATimePrinter) timeInstancePrinter).print(b, s + 12, 4, ps);
-        } else if (typetag == ATypeTag.DATETIME.serialize()) {
-            timeInstancePrinter = ADateTimePrinter.INSTANCE;
-            ((ADateTimePrinter) timeInstancePrinter).print(b, s, 8, ps);
-            ps.print(", \"end\": ");
-            ((ADateTimePrinter) timeInstancePrinter).print(b, s + 8, 8, ps);
-        } else {
-            throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
+        ATypeTag intervalType = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(typetag);
+        switch (intervalType) {
+            case DATE:
+                timeInstancePrinter = ADatePrinter.INSTANCE;
+                break;
+            case TIME:
+                timeInstancePrinter = ATimePrinter.INSTANCE;
+                break;
+            case DATETIME:
+                timeInstancePrinter = ADateTimePrinter.INSTANCE;
+                break;
+            default:
+                throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
         }
 
+        timeInstancePrinter.print(b, startOffset, startSize, ps);
+        ps.print(", \"end\": ");
+        timeInstancePrinter.print(b, endOffset, endSize, ps);
+
         ps.print("}}");
     }
 }
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AIntervalPrinter.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AIntervalPrinter.java
index 7727f92..84bf23c 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AIntervalPrinter.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/lossless/AIntervalPrinter.java
@@ -20,8 +20,12 @@
 
 import java.io.PrintStream;
 
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt8SerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.ADatePrinter;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.ADateTimePrinter;
+import org.apache.asterix.dataflow.data.nontagged.printers.adm.ATimePrinter;
+import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.EnumDeserializer;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.data.IPrinter;
 
@@ -43,29 +47,32 @@
     public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
         ps.print("{ \"interval\": { \"start\": ");
 
-        short typetag = AInt8SerializerDeserializer.getByte(b, s + 1 + 8 * 2);
+        byte typetag = AIntervalSerializerDeserializer.getIntervalTimeType(b, s + 1);
+        int startOffset = AIntervalSerializerDeserializer.getIntervalStartOffset(b, s + 1) - 1;
+        int startSize = AIntervalSerializerDeserializer.getStartSize(b, s + 1);
+        int endOffset = AIntervalSerializerDeserializer.getIntervalEndOffset(b, s + 1) - 1;
+        int endSize = AIntervalSerializerDeserializer.getEndSize(b, s + 1);
 
         IPrinter timeInstancePrinter;
-
-        if (typetag == ATypeTag.DATE.serialize()) {
-            timeInstancePrinter = ADatePrinter.INSTANCE;
-            ((ADatePrinter) timeInstancePrinter).print(b, s + 4, 4, ps);
-            ps.print(", \"end\": ");
-            ((ADatePrinter) timeInstancePrinter).print(b, s + 12, 4, ps);
-        } else if (typetag == ATypeTag.TIME.serialize()) {
-            timeInstancePrinter = ATimePrinter.INSTANCE;
-            ((ATimePrinter) timeInstancePrinter).print(b, s + 4, 4, ps);
-            ps.print(", \"end\": ");
-            ((ATimePrinter) timeInstancePrinter).print(b, s + 12, 4, ps);
-        } else if (typetag == ATypeTag.DATETIME.serialize()) {
-            timeInstancePrinter = ADateTimePrinter.INSTANCE;
-            ((ADateTimePrinter) timeInstancePrinter).print(b, s, 8, ps);
-            ps.print(", \"end\": ");
-            ((ADateTimePrinter) timeInstancePrinter).print(b, s + 8, 8, ps);
-        } else {
-            throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
+        ATypeTag intervalType = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(typetag);
+        switch (intervalType) {
+            case DATE:
+                timeInstancePrinter = ADatePrinter.INSTANCE;
+                break;
+            case TIME:
+                timeInstancePrinter = ATimePrinter.INSTANCE;
+                break;
+            case DATETIME:
+                timeInstancePrinter = ADateTimePrinter.INSTANCE;
+                break;
+            default:
+                throw new AlgebricksException("Unsupport internal time types in interval: " + typetag);
         }
 
+        timeInstancePrinter.print(b, startOffset, startSize, ps);
+        ps.print(", \"end\": ");
+        timeInstancePrinter.print(b, endOffset, endSize, ps);
+
         ps.print("}}");
     }
 }
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
index 94a8917..d5b6488 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
@@ -23,17 +23,27 @@
 import java.io.IOException;
 
 import org.apache.asterix.om.base.AInterval;
+import org.apache.asterix.om.types.ATypeTag;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.BytePointable;
+import org.apache.hyracks.data.std.primitive.IntegerPointable;
+import org.apache.hyracks.data.std.primitive.LongPointable;
 
+/*
+ * This class serializes and de-serializes the binary data representation of an interval.
+ *
+ * Interval {
+ *   byte type;
+ *   T start;
+ *   T end;
+ *
+ * T can be of type date, time or datetime.
+ */
 public class AIntervalSerializerDeserializer implements ISerializerDeserializer<AInterval> {
 
     private static final long serialVersionUID = 1L;
 
-    private static final int INTERVAL_START_POINT_OFFSET = 0;
-    private static final int INTERVAL_END_POINT_OFFSET = INTERVAL_START_POINT_OFFSET + Long.BYTES;
-    private static final int INTERVAL_TAG_OFFSET = INTERVAL_END_POINT_OFFSET + Long.BYTES;
-
     public static final AIntervalSerializerDeserializer INSTANCE = new AIntervalSerializerDeserializer();
 
     private AIntervalSerializerDeserializer() {
@@ -42,7 +52,16 @@
     @Override
     public AInterval deserialize(DataInput in) throws HyracksDataException {
         try {
-            return new AInterval(in.readLong(), in.readLong(), in.readByte());
+            byte tag = in.readByte();
+            long start = 0, end = 0;
+            if (tag == ATypeTag.DATETIME.serialize()) {
+                start = in.readLong();
+                end = in.readLong();
+            } else {
+                start = in.readInt();
+                end = in.readInt();
+            }
+            return new AInterval(start, end, tag);
         } catch (IOException e) {
             throw new HyracksDataException(e);
         }
@@ -52,36 +71,75 @@
     @Override
     public void serialize(AInterval instance, DataOutput out) throws HyracksDataException {
         try {
-            out.writeLong(instance.getIntervalStart());
-            out.writeLong(instance.getIntervalEnd());
             out.writeByte(instance.getIntervalType());
+            if (instance.getIntervalType() == ATypeTag.DATETIME.serialize()) {
+                out.writeLong(instance.getIntervalStart());
+                out.writeLong(instance.getIntervalEnd());
+            } else {
+                out.writeInt((int) instance.getIntervalStart());
+                out.writeInt((int) instance.getIntervalEnd());
+            }
         } catch (IOException e) {
             throw new HyracksDataException(e);
         }
     }
 
-    public static long getIntervalStart(byte[] data, int offset) {
-        return AInt64SerializerDeserializer.getLong(data, offset + getIntervalStartOffset());
+    public static byte getIntervalTimeType(byte[] data, int start) {
+        return BytePointable.getByte(data, getIntervalTypeOffset(data, start));
     }
 
-    public static long getIntervalEnd(byte[] data, int offset) {
-        return AInt64SerializerDeserializer.getLong(data, offset + getIntervalEndOffset());
+    public static int getIntervalTypeOffset(byte[] data, int start) {
+        return start;
     }
 
-    public static int getIntervalStartOffset() {
-        return INTERVAL_START_POINT_OFFSET;
+    public static int getTypeSize() {
+        return Byte.BYTES;
     }
 
-    public static int getIntervalEndOffset() {
-        return INTERVAL_END_POINT_OFFSET;
+    public static long getIntervalStart(byte[] data, int start) {
+        if (getIntervalTimeType(data, start) == ATypeTag.DATETIME.serialize()) {
+            return LongPointable.getLong(data, getIntervalStartOffset(data, start));
+        } else {
+            return IntegerPointable.getInteger(data, getIntervalStartOffset(data, start));
+        }
     }
 
-    public static int getIntervalTagOffset() {
-        return INTERVAL_TAG_OFFSET;
+    public static int getIntervalStartOffset(byte[] data, int start) {
+        int offset = getIntervalTypeOffset(data, start) + getTypeSize();
+        return offset;
     }
 
-    public static byte getIntervalTimeType(byte[] data, int offset) {
-        return data[offset + 8 * 2];
+    public static int getStartSize(byte[] data, int start) {
+        if (getIntervalTimeType(data, start) == ATypeTag.DATETIME.serialize()) {
+            return Long.BYTES;
+        } else {
+            return Integer.BYTES;
+        }
+    }
+
+    public static long getIntervalEnd(byte[] data, int start) {
+        if (getIntervalTimeType(data, start) == ATypeTag.DATETIME.serialize()) {
+            return LongPointable.getLong(data, getIntervalEndOffset(data, start));
+        } else {
+            return IntegerPointable.getInteger(data, getIntervalEndOffset(data, start));
+        }
+    }
+
+    public static int getIntervalEndOffset(byte[] data, int start) {
+        int offset = getIntervalStartOffset(data, start) + getStartSize(data, start);
+        return offset;
+    }
+
+    public static int getEndSize(byte[] data, int start) {
+        if (getIntervalTimeType(data, start) == ATypeTag.DATETIME.serialize()) {
+            return Long.BYTES;
+        } else {
+            return Integer.BYTES;
+        }
+    }
+
+    public static int getIntervalLength(byte[] data, int start) {
+        return getTypeSize() + getStartSize(data, start) + getEndSize(data, start);
     }
 
 }
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
index 0004977..fba898d 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
@@ -67,21 +67,7 @@
     @Override
     public AOrderedList deserialize(DataInput in) throws HyracksDataException {
         try {
-            boolean fixedSize = false;
             ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(in.readByte());
-            switch (typeTag) {
-                case STRING:
-                case BINARY:
-                case RECORD:
-                case ORDEREDLIST:
-                case UNORDEREDLIST:
-                case ANY:
-                    fixedSize = false;
-                    break;
-                default:
-                    fixedSize = true;
-                    break;
-            }
 
             IAType currentItemType = itemType;
             @SuppressWarnings("rawtypes")
@@ -97,7 +83,7 @@
             int numberOfitems;
             numberOfitems = in.readInt();
             if (numberOfitems > 0) {
-                if (!fixedSize) {
+                if (!NonTaggedFormatUtil.isFixedSizedCollection(currentItemType)) {
                     for (int i = 0; i < numberOfitems; i++)
                         in.readInt();
                 }
@@ -147,17 +133,11 @@
     public static int getItemOffset(byte[] serOrderedList, int offset, int itemIndex) throws AsterixException {
         if (serOrderedList[offset] == ATypeTag.ORDEREDLIST.serialize()) {
             ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serOrderedList[offset + 1]);
-            switch (typeTag) {
-                case STRING:
-                case BINARY:
-                case RECORD:
-                case ORDEREDLIST:
-                case UNORDEREDLIST:
-                case ANY:
-                    return offset + AInt32SerializerDeserializer.getInt(serOrderedList, offset + 10 + (4 * itemIndex));
-                default:
-                    int length = NonTaggedFormatUtil.getFieldValueLength(serOrderedList, offset + 1, typeTag, true);
-                    return offset + 10 + (length * itemIndex);
+            if (NonTaggedFormatUtil.isFixedSizedCollection(typeTag)) {
+                int length = NonTaggedFormatUtil.getFieldValueLength(serOrderedList, offset + 1, typeTag, true);
+                return offset + 10 + (length * itemIndex);
+            } else {
+                return offset + AInt32SerializerDeserializer.getInt(serOrderedList, offset + 10 + (4 * itemIndex));
             }
             // 10 = tag (1) + itemTag (1) + list size (4) + number of items (4)
         } else
diff --git a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
index 87e2ab7..9475e6a 100644
--- a/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
+++ b/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
@@ -69,21 +69,7 @@
     public AUnorderedList deserialize(DataInput in) throws HyracksDataException {
         // TODO: schemaless unordered list deserializer
         try {
-            boolean fixedSize = false;
             ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(in.readByte());
-            switch (typeTag) {
-                case STRING:
-                case BINARY:
-                case RECORD:
-                case ORDEREDLIST:
-                case UNORDEREDLIST:
-                case ANY:
-                    fixedSize = false;
-                    break;
-                default:
-                    fixedSize = true;
-                    break;
-            }
 
             IAType currentItemType = itemType;
             @SuppressWarnings("rawtypes")
@@ -99,7 +85,7 @@
             numberOfitems = in.readInt();
             ArrayList<IAObject> items = new ArrayList<IAObject>();
             if (numberOfitems > 0) {
-                if (!fixedSize) {
+                if (!NonTaggedFormatUtil.isFixedSizedCollection(currentItemType)) {
                     for (int i = 0; i < numberOfitems; i++)
                         in.readInt();
                 }
@@ -149,17 +135,11 @@
     public static int getItemOffset(byte[] serOrderedList, int offset, int itemIndex) throws AsterixException {
         if (serOrderedList[offset] == ATypeTag.UNORDEREDLIST.serialize()) {
             ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(serOrderedList[offset + 1]);
-            switch (typeTag) {
-                case STRING:
-                case BINARY:
-                case RECORD:
-                case ORDEREDLIST:
-                case UNORDEREDLIST:
-                case ANY:
-                    return offset + AInt32SerializerDeserializer.getInt(serOrderedList, offset + 10 + (4 * itemIndex));
-                default:
-                    int length = NonTaggedFormatUtil.getFieldValueLength(serOrderedList, offset + 1, typeTag, true);
-                    return offset + 10 + (length * itemIndex);
+            if (NonTaggedFormatUtil.isFixedSizedCollection(typeTag)) {
+                int length = NonTaggedFormatUtil.getFieldValueLength(serOrderedList, offset + 1, typeTag, true);
+                return offset + 10 + (length * itemIndex);
+            } else {
+                return offset + AInt32SerializerDeserializer.getInt(serOrderedList, offset + 10 + (4 * itemIndex));
             }
             // 10 = tag (1) + itemTag (1) + list size (4) + number of items (4)
         } else
diff --git a/asterix-om/src/main/java/org/apache/asterix/om/functions/AsterixBuiltinFunctions.java b/asterix-om/src/main/java/org/apache/asterix/om/functions/AsterixBuiltinFunctions.java
index 7b8a9fa..f1b0e67 100644
--- a/asterix-om/src/main/java/org/apache/asterix/om/functions/AsterixBuiltinFunctions.java
+++ b/asterix-om/src/main/java/org/apache/asterix/om/functions/AsterixBuiltinFunctions.java
@@ -508,12 +508,8 @@
     public final static FunctionIdentifier DAY_TIME_DURATION_CONSTRUCTOR = new FunctionIdentifier(
             FunctionConstants.ASTERIX_NS, "day-time-duration", 1);
 
-    public final static FunctionIdentifier INTERVAL_CONSTRUCTOR_DATE = new FunctionIdentifier(
-            FunctionConstants.ASTERIX_NS, "interval-from-date", 2);
-    public final static FunctionIdentifier INTERVAL_CONSTRUCTOR_TIME = new FunctionIdentifier(
-            FunctionConstants.ASTERIX_NS, "interval-from-time", 2);
-    public final static FunctionIdentifier INTERVAL_CONSTRUCTOR_DATETIME = new FunctionIdentifier(
-            FunctionConstants.ASTERIX_NS, "interval-from-datetime", 2);
+    public final static FunctionIdentifier INTERVAL_CONSTRUCTOR = new FunctionIdentifier(
+            FunctionConstants.ASTERIX_NS, "interval", 2);
     public final static FunctionIdentifier INTERVAL_CONSTRUCTOR_START_FROM_DATE = new FunctionIdentifier(
             FunctionConstants.ASTERIX_NS, "interval-start-from-date", 2);
     public final static FunctionIdentifier INTERVAL_CONSTRUCTOR_START_FROM_TIME = new FunctionIdentifier(
@@ -1026,9 +1022,7 @@
         addFunction(DURATION_FROM_INTERVAL, OptionalADayTimeDurationTypeComputer.INSTANCE, true);
 
         // interval constructors
-        addFunction(INTERVAL_CONSTRUCTOR_DATE, OptionalAIntervalTypeComputer.INSTANCE, true);
-        addFunction(INTERVAL_CONSTRUCTOR_TIME, OptionalAIntervalTypeComputer.INSTANCE, true);
-        addFunction(INTERVAL_CONSTRUCTOR_DATETIME, OptionalAIntervalTypeComputer.INSTANCE, true);
+        addFunction(INTERVAL_CONSTRUCTOR, OptionalAIntervalTypeComputer.INSTANCE, true);
         addFunction(INTERVAL_CONSTRUCTOR_START_FROM_DATE, OptionalAIntervalTypeComputer.INSTANCE, true);
         addFunction(INTERVAL_CONSTRUCTOR_START_FROM_DATETIME, OptionalAIntervalTypeComputer.INSTANCE, true);
         addFunction(INTERVAL_CONSTRUCTOR_START_FROM_TIME, OptionalAIntervalTypeComputer.INSTANCE, true);
diff --git a/asterix-om/src/main/java/org/apache/asterix/om/pointables/AListVisitablePointable.java b/asterix-om/src/main/java/org/apache/asterix/om/pointables/AListVisitablePointable.java
index 42371ea..2f7d9af 100644
--- a/asterix-om/src/main/java/org/apache/asterix/om/pointables/AListVisitablePointable.java
+++ b/asterix-om/src/main/java/org/apache/asterix/om/pointables/AListVisitablePointable.java
@@ -101,19 +101,9 @@
 
         int numberOfitems = AInt32SerializerDeserializer.getInt(b, s + 6);
         int itemOffset;
-        if (typedItemList) {
-            switch (itemTag) {
-                case STRING:
-                case BINARY:
-                case RECORD:
-                case ORDEREDLIST:
-                case UNORDEREDLIST:
-                case ANY:
-                    itemOffset = s + 10 + (numberOfitems * 4);
-                    break;
-                default:
-                    itemOffset = s + 10;
-            }
+
+        if (typedItemList && NonTaggedFormatUtil.isFixedSizedCollection(itemTag)) {
+            itemOffset = s + 10;
         } else {
             itemOffset = s + 10 + (numberOfitems * 4);
         }
diff --git a/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java b/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java
index 734319a..2f8e5f9 100644
--- a/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java
+++ b/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java
@@ -34,6 +34,7 @@
 import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.AInt32Printer;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.AInt64Printer;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.AInt8Printer;
+import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.AIntervalPrinter;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.ALinePrinter;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.ANullPrinter;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.APoint3DPrinter;
@@ -154,6 +155,10 @@
                     ADurationPrinter.INSTANCE.print(b, s, l, ps);
                     break;
                 }
+                case INTERVAL: {
+                    AIntervalPrinter.INSTANCE.print(b, s, l, ps);
+                    break;
+                }
                 case POINT: {
                     APointPrinter.INSTANCE.print(b, s, l, ps);
                     break;
diff --git a/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/lossless/APrintVisitor.java b/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/lossless/APrintVisitor.java
index d291d33..3d8958a 100644
--- a/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/lossless/APrintVisitor.java
+++ b/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/lossless/APrintVisitor.java
@@ -34,6 +34,7 @@
 import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.AInt32Printer;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.AInt64Printer;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.AInt8Printer;
+import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.AIntervalPrinter;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.ALinePrinter;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.ANullPrinter;
 import org.apache.asterix.dataflow.data.nontagged.printers.json.lossless.APoint3DPrinter;
@@ -154,6 +155,10 @@
                     ADurationPrinter.INSTANCE.print(b, s, l, ps);
                     break;
                 }
+                case INTERVAL: {
+                    AIntervalPrinter.INSTANCE.print(b, s, l, ps);
+                    break;
+                }
                 case POINT: {
                     APointPrinter.INSTANCE.print(b, s, l, ps);
                     break;
diff --git a/asterix-om/src/main/java/org/apache/asterix/om/util/NonTaggedFormatUtil.java b/asterix-om/src/main/java/org/apache/asterix/om/util/NonTaggedFormatUtil.java
index 6377bcc..c24ce45 100644
--- a/asterix-om/src/main/java/org/apache/asterix/om/util/NonTaggedFormatUtil.java
+++ b/asterix-om/src/main/java/org/apache/asterix/om/util/NonTaggedFormatUtil.java
@@ -23,6 +23,7 @@
 import org.apache.asterix.common.config.DatasetConfig.IndexType;
 import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.dataflow.data.nontagged.serde.AInt16SerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
 import org.apache.asterix.dataflow.data.nontagged.serde.AOrderedListSerializerDeserializer;
 import org.apache.asterix.dataflow.data.nontagged.serde.ARecordSerializerDeserializer;
 import org.apache.asterix.dataflow.data.nontagged.serde.AUnorderedListSerializerDeserializer;
@@ -48,20 +49,28 @@
 
     public static final boolean isFixedSizedCollection(IAType type) {
         switch (type.getTypeTag()) {
-            case STRING:
-            case BINARY:
-            case RECORD:
-            case ORDEREDLIST:
-            case UNORDEREDLIST:
-            case POLYGON:
-            case ANY:
-                return false;
             case UNION:
                 if (!((AUnionType) type).isNullableType())
                     return false;
                 else
                     return isFixedSizedCollection(((AUnionType) type).getNullableType());
             default:
+                return isFixedSizedCollection(type.getTypeTag());
+        }
+    }
+
+    public static final boolean isFixedSizedCollection(ATypeTag type) {
+        switch (type) {
+            case STRING:
+            case BINARY:
+            case RECORD:
+            case INTERVAL:
+            case ORDEREDLIST:
+            case UNORDEREDLIST:
+            case POLYGON:
+            case ANY:
+                return false;
+            default:
                 return true;
         }
     }
@@ -130,7 +139,10 @@
             case UUID:
                 return 16;
             case INTERVAL:
-                return 17;
+                if (tagged)
+                    return AIntervalSerializerDeserializer.getIntervalLength(serNonTaggedAObject, offset + 1);
+                else
+                    return AIntervalSerializerDeserializer.getIntervalLength(serNonTaggedAObject, offset);
             case POINT3D:
             case CIRCLE:
                 return 24;
diff --git a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateConstructorDescriptor.java b/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalConstructorDescriptor.java
similarity index 66%
rename from asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateConstructorDescriptor.java
rename to asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalConstructorDescriptor.java
index ecfed56..a342b70 100644
--- a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateConstructorDescriptor.java
+++ b/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalConstructorDescriptor.java
@@ -22,12 +22,12 @@
 import java.io.IOException;
 
 import org.apache.asterix.dataflow.data.nontagged.serde.ADateSerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.ADateTimeSerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.ATimeSerializerDeserializer;
 import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
 import org.apache.asterix.om.base.AInterval;
 import org.apache.asterix.om.base.AMutableInterval;
 import org.apache.asterix.om.base.ANull;
-import org.apache.asterix.om.base.temporal.ADateParserFactory;
-import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
 import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
 import org.apache.asterix.om.functions.IFunctionDescriptor;
 import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
@@ -41,17 +41,16 @@
 import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.data.std.api.IDataOutputProvider;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
 
-public class AIntervalFromDateConstructorDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+public class AIntervalConstructorDescriptor extends AbstractScalarFunctionDynamicDescriptor {
     private static final long serialVersionUID = 1L;
-    public final static FunctionIdentifier FID = AsterixBuiltinFunctions.INTERVAL_CONSTRUCTOR_DATE;
+    public final static FunctionIdentifier FID = AsterixBuiltinFunctions.INTERVAL_CONSTRUCTOR;
     public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
         @Override
         public IFunctionDescriptor createFunctionDescriptor() {
-            return new AIntervalFromDateConstructorDescriptor();
+            return new AIntervalConstructorDescriptor();
         }
     };
 
@@ -65,13 +64,11 @@
                 return new ICopyEvaluator() {
 
                     private DataOutput out = output.getDataOutput();
-
                     private ArrayBackedValueStorage argOut0 = new ArrayBackedValueStorage();
                     private ArrayBackedValueStorage argOut1 = new ArrayBackedValueStorage();
                     private ICopyEvaluator eval0 = args[0].createEvaluator(argOut0);
                     private ICopyEvaluator eval1 = args[1].createEvaluator(argOut1);
-                    private String errorMessage = "This can not be an instance of interval (from Date)";
-                    //TODO: Where to move and fix these?
+                    private String errorMessage = "This can not be an instance of interval (only support Date/Time/Datetime)";
                     private AMutableInterval aInterval = new AMutableInterval(0L, 0L, (byte) 0);
                     @SuppressWarnings("unchecked")
                     private ISerializerDeserializer<AInterval> intervalSerde = AqlSerializerDeserializerProvider.INSTANCE
@@ -79,7 +76,6 @@
                     @SuppressWarnings("unchecked")
                     private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
                             .getSerializerDeserializer(BuiltinType.ANULL);
-                    private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
 
                     @Override
                     public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
@@ -97,34 +93,38 @@
                                 return;
                             }
 
-                            long intervalStart = 0, intervalEnd = 0;
-
-                            if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_DATE_TYPE_TAG) {
-                                intervalStart = ADateSerializerDeserializer.getChronon(argOut0.getByteArray(), 1);
-                            } else if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
-                                utf8Ptr.set(argOut0.getByteArray(), 1, argOut0.getLength() - 1);
-                                int stringLength = utf8Ptr.getUTF8Length();
-                                intervalStart = ADateParserFactory.parseDatePart(utf8Ptr.getByteArray(),
-                                        utf8Ptr.getCharStartOffset(), stringLength)
-                                        / GregorianCalendarSystem.CHRONON_OF_DAY;
-                            } else {
-                                throw new AlgebricksException(FID.getName()
-                                        + ": expects NULL/STRING/DATE for the first argument, but got "
-                                        + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argOut0.getByteArray()[0]));
+                            if (argOut0.getByteArray()[0] != argOut1.getByteArray()[0]) {
+                                throw new AlgebricksException(
+                                        FID.getName()
+                                                + ": expects both arguments to be of the same type. Either DATE/TIME/DATETIME, but got "
+                                                + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(
+                                                        argOut0.getByteArray()[0])
+                                                + " and " + EnumDeserializer.ATYPETAGDESERIALIZER
+                                                        .deserialize(argOut0.getByteArray()[1]));
                             }
 
-                            if (argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_DATE_TYPE_TAG) {
-                                intervalEnd = ADateSerializerDeserializer.getChronon(argOut1.getByteArray(), 1);
-                            } else if (argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
-                                utf8Ptr.set(argOut1.getByteArray(), 1, argOut1.getLength() - 1);
-                                int stringLength = utf8Ptr.getUTF8Length();
-                                intervalEnd = ADateParserFactory.parseDatePart(utf8Ptr.getByteArray(),
-                                        utf8Ptr.getCharStartOffset(), stringLength)
-                                        / GregorianCalendarSystem.CHRONON_OF_DAY;
-                            } else {
-                                throw new AlgebricksException(FID.getName()
-                                        + ": expects NULL/STRING/DATE for the second argument, but got "
-                                        + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argOut1.getByteArray()[0]));
+                            long intervalStart = 0, intervalEnd = 0;
+                            ATypeTag intervalType = EnumDeserializer.ATYPETAGDESERIALIZER
+                                    .deserialize(argOut0.getByteArray()[0]);
+
+                            switch (intervalType) {
+                                case DATE:
+                                    intervalStart = ADateSerializerDeserializer.getChronon(argOut0.getByteArray(), 1);
+                                    intervalEnd = ADateSerializerDeserializer.getChronon(argOut1.getByteArray(), 1);
+                                    break;
+                                case TIME:
+                                    intervalStart = ATimeSerializerDeserializer.getChronon(argOut0.getByteArray(), 1);
+                                    intervalEnd = ATimeSerializerDeserializer.getChronon(argOut1.getByteArray(), 1);
+                                    break;
+                                case DATETIME:
+                                    intervalStart = ADateTimeSerializerDeserializer.getChronon(argOut0.getByteArray(),
+                                            1);
+                                    intervalEnd = ADateTimeSerializerDeserializer.getChronon(argOut1.getByteArray(), 1);
+                                    break;
+                                default:
+                                    throw new AlgebricksException(
+                                            FID.getName() + ": expects NULL/DATE/TIME/DATETIME as arguments, but got "
+                                                    + intervalType);
                             }
 
                             if (intervalEnd < intervalStart) {
@@ -132,7 +132,7 @@
                                         FID.getName() + ": interval end must not be less than the interval start.");
                             }
 
-                            aInterval.setValue(intervalStart, intervalEnd, ATypeTag.SERIALIZED_DATE_TYPE_TAG);
+                            aInterval.setValue(intervalStart, intervalEnd, intervalType.serialize());
                             intervalSerde.serialize(aInterval, out);
 
                         } catch (IOException e1) {
diff --git a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateTimeConstructorDescriptor.java b/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateTimeConstructorDescriptor.java
deleted file mode 100644
index 2972912..0000000
--- a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromDateTimeConstructorDescriptor.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.asterix.runtime.evaluators.constructors;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.asterix.dataflow.data.nontagged.serde.ADateTimeSerializerDeserializer;
-import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
-import org.apache.asterix.om.base.AInterval;
-import org.apache.asterix.om.base.AMutableInterval;
-import org.apache.asterix.om.base.ANull;
-import org.apache.asterix.om.base.temporal.ADateParserFactory;
-import org.apache.asterix.om.base.temporal.ATimeParserFactory;
-import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
-import org.apache.asterix.om.functions.IFunctionDescriptor;
-import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
-import org.apache.asterix.om.types.ATypeTag;
-import org.apache.asterix.om.types.BuiltinType;
-import org.apache.asterix.om.types.EnumDeserializer;
-import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public class AIntervalFromDateTimeConstructorDescriptor extends AbstractScalarFunctionDynamicDescriptor {
-
-    private static final long serialVersionUID = 1L;
-    public final static FunctionIdentifier FID = AsterixBuiltinFunctions.INTERVAL_CONSTRUCTOR_DATETIME;
-
-    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
-        @Override
-        public IFunctionDescriptor createFunctionDescriptor() {
-            return new AIntervalFromDateTimeConstructorDescriptor();
-        }
-    };
-
-    @Override
-    public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args) {
-        return new ICopyEvaluatorFactory() {
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException {
-                return new ICopyEvaluator() {
-
-                    private DataOutput out = output.getDataOutput();
-
-                    private ArrayBackedValueStorage argOut0 = new ArrayBackedValueStorage();
-                    private ArrayBackedValueStorage argOut1 = new ArrayBackedValueStorage();
-                    private ICopyEvaluator eval0 = args[0].createEvaluator(argOut0);
-                    private ICopyEvaluator eval1 = args[1].createEvaluator(argOut1);
-                    private String errorMessage = "This can not be an instance of interval (from DateTime)";
-                    //TODO: Where to move and fix these?
-                    private AMutableInterval aInterval = new AMutableInterval(0L, 0L, (byte) 0);
-                    @SuppressWarnings("unchecked")
-                    private ISerializerDeserializer<AInterval> intervalSerde = AqlSerializerDeserializerProvider.INSTANCE
-                            .getSerializerDeserializer(BuiltinType.AINTERVAL);
-                    @SuppressWarnings("unchecked")
-                    private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
-                            .getSerializerDeserializer(BuiltinType.ANULL);
-                    private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
-
-                    @Override
-                    public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
-
-                        argOut0.reset();
-                        argOut1.reset();
-                        eval0.evaluate(tuple);
-                        eval1.evaluate(tuple);
-
-                        try {
-
-                            if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG
-                                    || argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
-                                nullSerde.serialize(ANull.NULL, out);
-                                return;
-                            }
-
-                            long intervalStart = 0, intervalEnd = 0;
-
-                            if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_DATETIME_TYPE_TAG) {
-                                intervalStart = ADateTimeSerializerDeserializer.getChronon(argOut0.getByteArray(), 1);
-                            } else if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
-                                // start datetime
-                                utf8Ptr.set(argOut0.getByteArray(), 1, argOut0.getLength() - 1);
-
-                                int stringLength = utf8Ptr.getUTF8Length();
-                                // get offset for time part: +1 if it is negative (-)
-                                int startOffset = utf8Ptr.getCharStartOffset();
-                                short timeOffset = (short) ((argOut0.getByteArray()[startOffset] == '-') ? 1 : 0);
-                                timeOffset += 8;
-                                if (argOut0.getByteArray()[startOffset + timeOffset] != 'T') {
-                                    timeOffset += 2;
-                                    if (argOut0.getByteArray()[startOffset + timeOffset] != 'T') {
-                                        throw new AlgebricksException(errorMessage + ": missing T");
-                                    }
-                                }
-                                intervalStart = ADateParserFactory.parseDatePart(argOut0.getByteArray(), startOffset,
-                                        timeOffset);
-                                intervalStart += ATimeParserFactory.parseTimePart(argOut0.getByteArray(),
-                                        startOffset + timeOffset + 1, stringLength - timeOffset - 1);
-                            } else {
-                                throw new AlgebricksException(FID.getName()
-                                        + ": expects NULL/STRING/DATETIME for the first argument, but got "
-                                        + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argOut0.getByteArray()[0]));
-                            }
-
-                            if (argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_DATETIME_TYPE_TAG) {
-                                intervalEnd = ADateTimeSerializerDeserializer.getChronon(argOut1.getByteArray(), 1);
-                            } else if (argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
-                                // start datetime
-                                utf8Ptr.set(argOut1.getByteArray(), 1, argOut1.getLength() - 1);
-                                int stringLength = utf8Ptr.getUTF8Length();
-                                // get offset for time part: +1 if it is negative (-)
-                                int startOffset = utf8Ptr.getCharStartOffset();
-                                short timeOffset = (short) ((argOut1.getByteArray()[startOffset] == '-') ? 1 : 0);
-                                timeOffset += 8;
-                                if (argOut1.getByteArray()[startOffset + timeOffset] != 'T') {
-                                    timeOffset += 2;
-                                    if (argOut1.getByteArray()[startOffset + timeOffset] != 'T') {
-                                        throw new AlgebricksException(errorMessage + ": missing T");
-                                    }
-                                }
-                                intervalEnd = ADateParserFactory.parseDatePart(argOut1.getByteArray(), startOffset,
-                                        timeOffset);
-                                intervalEnd += ATimeParserFactory.parseTimePart(argOut1.getByteArray(),
-                                        startOffset + timeOffset + 1, stringLength - timeOffset - 1);
-                            } else {
-                                throw new AlgebricksException(FID.getName()
-                                        + ": expects NULL/STRING/DATETIME for the second argument, but got "
-                                        + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argOut1.getByteArray()[0]));
-                            }
-
-                            if (intervalEnd < intervalStart) {
-                                throw new AlgebricksException(
-                                        FID.getName() + ": interval end must not be less than the interval start.");
-                            }
-
-                            aInterval.setValue(intervalStart, intervalEnd, ATypeTag.SERIALIZED_DATETIME_TYPE_TAG);
-                            intervalSerde.serialize(aInterval, out);
-
-                        } catch (IOException e1) {
-                            throw new AlgebricksException(errorMessage);
-                        } catch (Exception e2) {
-                            throw new AlgebricksException(e2);
-                        }
-                    }
-                };
-            }
-        };
-    }
-
-    @Override
-    public FunctionIdentifier getIdentifier() {
-        return FID;
-    }
-
-}
\ No newline at end of file
diff --git a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromTimeConstructorDescriptor.java b/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromTimeConstructorDescriptor.java
deleted file mode 100644
index 25bc7df..0000000
--- a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AIntervalFromTimeConstructorDescriptor.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.asterix.runtime.evaluators.constructors;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.asterix.dataflow.data.nontagged.serde.ATimeSerializerDeserializer;
-import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
-import org.apache.asterix.om.base.AInterval;
-import org.apache.asterix.om.base.AMutableInterval;
-import org.apache.asterix.om.base.ANull;
-import org.apache.asterix.om.base.temporal.ATimeParserFactory;
-import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
-import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
-import org.apache.asterix.om.functions.IFunctionDescriptor;
-import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
-import org.apache.asterix.om.types.ATypeTag;
-import org.apache.asterix.om.types.BuiltinType;
-import org.apache.asterix.om.types.EnumDeserializer;
-import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public class AIntervalFromTimeConstructorDescriptor extends AbstractScalarFunctionDynamicDescriptor {
-    private static final long serialVersionUID = 1L;
-    public final static FunctionIdentifier FID = AsterixBuiltinFunctions.INTERVAL_CONSTRUCTOR_TIME;
-    public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
-        @Override
-        public IFunctionDescriptor createFunctionDescriptor() {
-            return new AIntervalFromTimeConstructorDescriptor();
-        }
-    };
-
-    @Override
-    public ICopyEvaluatorFactory createEvaluatorFactory(final ICopyEvaluatorFactory[] args) {
-        return new ICopyEvaluatorFactory() {
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException {
-                return new ICopyEvaluator() {
-
-                    private DataOutput out = output.getDataOutput();
-
-                    private ArrayBackedValueStorage argOut0 = new ArrayBackedValueStorage();
-                    private ArrayBackedValueStorage argOut1 = new ArrayBackedValueStorage();
-                    private ICopyEvaluator eval0 = args[0].createEvaluator(argOut0);
-                    private ICopyEvaluator eval1 = args[1].createEvaluator(argOut1);
-                    private String errorMessage = "This can not be an instance of interval (from Date)";
-                    //TODO: Where to move and fix these?
-                    private AMutableInterval aInterval = new AMutableInterval(0L, 0L, (byte) 0);
-                    @SuppressWarnings("unchecked")
-                    private ISerializerDeserializer<AInterval> intervalSerde = AqlSerializerDeserializerProvider.INSTANCE
-                            .getSerializerDeserializer(BuiltinType.AINTERVAL);
-                    @SuppressWarnings("unchecked")
-                    private ISerializerDeserializer<ANull> nullSerde = AqlSerializerDeserializerProvider.INSTANCE
-                            .getSerializerDeserializer(BuiltinType.ANULL);
-                    private final UTF8StringPointable utf8Ptr = new UTF8StringPointable();
-
-                    @Override
-                    public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
-
-                        argOut0.reset();
-                        argOut1.reset();
-                        eval0.evaluate(tuple);
-                        eval1.evaluate(tuple);
-
-                        try {
-
-                            if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG
-                                    || argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
-                                nullSerde.serialize(ANull.NULL, out);
-                                return;
-                            }
-
-                            long intervalStart = 0, intervalEnd = 0;
-
-                            if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_TIME_TYPE_TAG) {
-                                intervalStart = ATimeSerializerDeserializer.getChronon(argOut0.getByteArray(), 1);
-                            } else if (argOut0.getByteArray()[0] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
-                                utf8Ptr.set(argOut0.getByteArray(), 1, argOut0.getLength() - 1);
-                                // start date
-                                int stringLength = utf8Ptr.getUTF8Length();
-
-                                intervalStart = ATimeParserFactory.parseTimePart(utf8Ptr.getByteArray(),
-                                        utf8Ptr.getCharStartOffset(), stringLength);
-                            } else {
-                                throw new AlgebricksException(FID.getName()
-                                        + ": expects NULL/STRING/TIME for the first argument, but got "
-                                        + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argOut0.getByteArray()[0]));
-                            }
-
-                            if (intervalStart < 0) {
-                                intervalStart += GregorianCalendarSystem.CHRONON_OF_DAY;
-                            }
-
-                            if (argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_TIME_TYPE_TAG) {
-                                intervalEnd = ATimeSerializerDeserializer.getChronon(argOut1.getByteArray(), 1);
-                            } else if (argOut1.getByteArray()[0] == ATypeTag.SERIALIZED_STRING_TYPE_TAG) {
-                                utf8Ptr.set(argOut1.getByteArray(), 1, argOut1.getLength() - 1);
-                                // start date
-                                int stringLength = utf8Ptr.getUTF8Length();
-
-                                intervalEnd = ATimeParserFactory.parseTimePart(argOut1.getByteArray(),
-                                        utf8Ptr.getCharStartOffset(), stringLength);
-
-                            } else {
-                                throw new AlgebricksException(FID.getName()
-                                        + ": expects NULL/STRING/TIME for the second argument, but got "
-                                        + EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(argOut1.getByteArray()[0]));
-                            }
-
-                            if (intervalEnd < 0) {
-                                intervalEnd += GregorianCalendarSystem.CHRONON_OF_DAY;
-                            }
-
-                            if (intervalEnd < intervalStart) {
-                                throw new AlgebricksException(
-                                        FID.getName() + ": interval end must not be less than the interval start.");
-                            }
-
-                            aInterval.setValue(intervalStart, intervalEnd, ATypeTag.SERIALIZED_TIME_TYPE_TAG);
-                            intervalSerde.serialize(aInterval, out);
-
-                        } catch (IOException e1) {
-                            throw new AlgebricksException(errorMessage);
-                        } catch (Exception e2) {
-                            throw new AlgebricksException(e2);
-                        }
-                    }
-                };
-            }
-        };
-    }
-
-    @Override
-    public FunctionIdentifier getIdentifier() {
-        return FID;
-    }
-
-}
\ No newline at end of file
diff --git a/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java b/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
index 715bba7..27dadfc 100644
--- a/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
+++ b/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
@@ -150,9 +150,7 @@
 import org.apache.asterix.runtime.evaluators.constructors.AInt32ConstructorDescriptor;
 import org.apache.asterix.runtime.evaluators.constructors.AInt64ConstructorDescriptor;
 import org.apache.asterix.runtime.evaluators.constructors.AInt8ConstructorDescriptor;
-import org.apache.asterix.runtime.evaluators.constructors.AIntervalFromDateConstructorDescriptor;
-import org.apache.asterix.runtime.evaluators.constructors.AIntervalFromDateTimeConstructorDescriptor;
-import org.apache.asterix.runtime.evaluators.constructors.AIntervalFromTimeConstructorDescriptor;
+import org.apache.asterix.runtime.evaluators.constructors.AIntervalConstructorDescriptor;
 import org.apache.asterix.runtime.evaluators.constructors.AIntervalStartFromDateConstructorDescriptor;
 import org.apache.asterix.runtime.evaluators.constructors.AIntervalStartFromDateTimeConstructorDescriptor;
 import org.apache.asterix.runtime.evaluators.constructors.AIntervalStartFromTimeConstructorDescriptor;
@@ -605,9 +603,7 @@
         temp.add(DurationFromIntervalDescriptor.FACTORY);
 
         // Interval constructor
-        temp.add(AIntervalFromDateConstructorDescriptor.FACTORY);
-        temp.add(AIntervalFromTimeConstructorDescriptor.FACTORY);
-        temp.add(AIntervalFromDateTimeConstructorDescriptor.FACTORY);
+        temp.add(AIntervalConstructorDescriptor.FACTORY);
         temp.add(AIntervalStartFromDateConstructorDescriptor.FACTORY);
         temp.add(AIntervalStartFromDateTimeConstructorDescriptor.FACTORY);
         temp.add(AIntervalStartFromTimeConstructorDescriptor.FACTORY);
@@ -866,8 +862,9 @@
 
         functionTypeInferers.put(AsterixBuiltinFunctions.DEEP_EQUAL, new FunctionTypeInferer() {
 
-            @Override public void infer(ILogicalExpression expr, IFunctionDescriptor fd,
-                    IVariableTypeEnvironment context) throws AlgebricksException {
+            @Override
+            public void infer(ILogicalExpression expr, IFunctionDescriptor fd, IVariableTypeEnvironment context)
+                    throws AlgebricksException {
                 AbstractFunctionCallExpression f = (AbstractFunctionCallExpression) expr;
                 IAType type0 = (IAType) context.getType(f.getArguments().get(0).getValue());
                 IAType type1 = (IAType) context.getType(f.getArguments().get(1).getValue());
@@ -877,8 +874,9 @@
 
         functionTypeInferers.put(AsterixBuiltinFunctions.ADD_FIELDS, new FunctionTypeInferer() {
 
-            @Override public void infer(ILogicalExpression expr, IFunctionDescriptor fd,
-                    IVariableTypeEnvironment context) throws AlgebricksException {
+            @Override
+            public void infer(ILogicalExpression expr, IFunctionDescriptor fd, IVariableTypeEnvironment context)
+                    throws AlgebricksException {
                 AbstractFunctionCallExpression f = (AbstractFunctionCallExpression) expr;
                 IAType outType = (IAType) context.getType(expr);
                 IAType type0 = (IAType) context.getType(f.getArguments().get(0).getValue());
@@ -896,8 +894,9 @@
 
         functionTypeInferers.put(AsterixBuiltinFunctions.REMOVE_FIELDS, new FunctionTypeInferer() {
 
-            @Override public void infer(ILogicalExpression expr, IFunctionDescriptor fd,
-                    IVariableTypeEnvironment context) throws AlgebricksException {
+            @Override
+            public void infer(ILogicalExpression expr, IFunctionDescriptor fd, IVariableTypeEnvironment context)
+                    throws AlgebricksException {
                 AbstractFunctionCallExpression f = (AbstractFunctionCallExpression) expr;
                 IAType outType = (IAType) context.getType(expr);
                 IAType type0 = (IAType) context.getType(f.getArguments().get(0).getValue());
