Implement DATESUM, DATEDIFF functions.
[pspp-builds.git] / tests / expressions / expressions.sh
index 70049e13f8900bb2b50e409ec1d0091cd005e662..88c9bafae9b0b1d89d386d9ef884ec4469624ff5 100755 (executable)
@@ -1261,6 +1261,263 @@ xdate.year(date.mdy(2,25,96) + time.hms(21,30,57)) => 1996.00
 xdate.year(date.mdy(11,10,2038) + time.hms(22,30,4)) => 2038.00
 xdate.year(date.mdy(7,18,2094) + time.hms(1,56,51)) => 2094.00
 
+datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'years') => 32.00
+datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'years') => 36.00
+datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'years') => 51.00
+datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'years') => 51.00
+datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'years') => 19.00
+datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'years') => 64.00
+datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'years') => 26.00
+datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'years') => 12.00
+datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'years') => 1.00
+datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'years') => 0.00
+datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'years') => 48.00
+datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'years') => 3.00
+datediff(date.mdy(9,29,41), date.mdy(2,25,1996), 'years') => 54.00
+datediff(date.mdy(9,29,41), date.mdy(4,19,43), 'years') => 1.00
+datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'years') => 0.00
+datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'years') => 48.00
+datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'years') => 3.00
+datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'years') => 42.00
+datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'years') => 55.00
+datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'years') => 3.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'years') => 4.00
+datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'years') => 2.00
+
+datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'quarters') => 128.00
+datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'quarters') => 144.00
+datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'quarters') => 207.00
+datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'quarters') => 204.00
+datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'quarters') => 78.00
+datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'quarters') => 256.00
+datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'quarters') => 105.00
+datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'quarters') => 48.00
+datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'quarters') => 6.00
+datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'quarters') => 1.00
+datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'quarters') => 193.00
+datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'quarters') => 15.00
+datediff(date.mdy(9,29,41), date.mdy(2,25,1996), 'quarters') => 217.00
+datediff(date.mdy(9,29,41), date.mdy(4,19,43), 'quarters') => 6.00
+datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'quarters') => 1.00
+datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'quarters') => 193.00
+datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'quarters') => 15.00
+datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'quarters') => 170.00
+datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'quarters') => 222.00
+datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'quarters') => 15.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'quarters') => 16.00
+datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'quarters') => 11.00
+
+datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'months') => 384.00
+datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'months') => 432.00
+datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'months') => 622.00
+datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'months') => 613.00
+datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'months') => 235.00
+datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'months') => 768.00
+datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'months') => 316.00
+datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'months') => 145.00
+datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'months') => 18.00
+datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'months') => 5.00
+datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'months') => 581.00
+datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'months') => 47.00
+datediff(date.mdy(9,29,41), date.mdy(2,25,1996), 'months') => 652.00
+datediff(date.mdy(9,29,41), date.mdy(4,19,43), 'months') => 18.00
+datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'months') => 5.00
+datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'months') => 581.00
+datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'months') => 47.00
+datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'months') => 512.00
+datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'months') => 668.00
+datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'months') => 47.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'months') => 48.00
+datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'months') => 35.00
+
+datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'weeks') => 1672.00
+datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'weeks') => 1881.00
+datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'weeks') => 2708.00
+datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'weeks') => 2667.00
+datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'weeks') => 1025.00
+datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'weeks') => 3342.00
+datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'weeks') => 1375.00
+datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'weeks') => 631.00
+datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'weeks') => 81.00
+datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'weeks') => 24.00
+datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'weeks') => 2527.00
+datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'weeks') => 205.00
+datediff(date.mdy(9,29,41), date.mdy(2,25,1996), 'weeks') => 2838.00
+datediff(date.mdy(9,29,41), date.mdy(4,19,43), 'weeks') => 81.00
+datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'weeks') => 24.00
+datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'weeks') => 2527.00
+datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'weeks') => 205.00
+datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'weeks') => 2228.00
+datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'weeks') => 2905.00
+datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'weeks') => 208.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'weeks') => 208.00
+datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'weeks') => 156.00
+
+datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'days') => 11708.00
+datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'days') => 13172.00
+datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'days') => 18958.00
+datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'days') => 18670.00
+datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'days') => 7177.00
+datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'days') => 23398.00
+datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'days') => 9625.00
+datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'days') => 4418.00
+datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'days') => 567.00
+datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'days') => 171.00
+datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'days') => 17694.00
+datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'days') => 1440.00
+datediff(date.mdy(9,29,41), date.mdy(2,25,1996), 'days') => 19872.00
+datediff(date.mdy(9,29,41), date.mdy(4,19,43), 'days') => 567.00
+datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'days') => 171.00
+datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'days') => 17694.00
+datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'days') => 1440.00
+datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'days') => 15599.00
+datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'days') => 20339.00
+datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'days') => 1460.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'days') => 1461.00
+datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'days') => 1094.00
+
+datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'years') => -32.00
+datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'years') => -36.00
+datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'years') => -51.00
+datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'years') => -51.00
+datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'years') => -19.00
+datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'years') => -64.00
+datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'years') => -26.00
+datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'years') => -12.00
+datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'years') => -1.00
+datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'years') => 0.00
+datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'years') => -48.00
+datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'years') => -3.00
+datediff(date.mdy(2,25,1996), date.mdy(9,29,41), 'years') => -54.00
+datediff(date.mdy(4,19,43), date.mdy(9,29,41), 'years') => -1.00
+datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'years') => 0.00
+datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'years') => -48.00
+datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'years') => -3.00
+datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'years') => -42.00
+datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'years') => -55.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'years') => -3.00
+datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'years') => -4.00
+datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'years') => -2.00
+
+datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'months') => -384.00
+datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'months') => -432.00
+datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'months') => -622.00
+datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'months') => -613.00
+datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'months') => -235.00
+datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'months') => -768.00
+datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'months') => -316.00
+datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'months') => -145.00
+datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'months') => -18.00
+datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'months') => -5.00
+datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'months') => -581.00
+datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'months') => -47.00
+datediff(date.mdy(2,25,1996), date.mdy(9,29,41), 'months') => -652.00
+datediff(date.mdy(4,19,43), date.mdy(9,29,41), 'months') => -18.00
+datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'months') => -5.00
+datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'months') => -581.00
+datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'months') => -47.00
+datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'months') => -512.00
+datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'months') => -668.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'months') => -47.00
+datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'months') => -48.00
+datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'months') => -35.00
+
+datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'quarters') => -128.00
+datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'quarters') => -144.00
+datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'quarters') => -207.00
+datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'quarters') => -204.00
+datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'quarters') => -78.00
+datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'quarters') => -256.00
+datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'quarters') => -105.00
+datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'quarters') => -48.00
+datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'quarters') => -6.00
+datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'quarters') => -1.00
+datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'quarters') => -193.00
+datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'quarters') => -15.00
+datediff(date.mdy(2,25,1996), date.mdy(9,29,41), 'quarters') => -217.00
+datediff(date.mdy(4,19,43), date.mdy(9,29,41), 'quarters') => -6.00
+datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'quarters') => -1.00
+datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'quarters') => -193.00
+datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'quarters') => -15.00
+datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'quarters') => -170.00
+datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'quarters') => -222.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'quarters') => -15.00
+datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'quarters') => -16.00
+datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'quarters') => -11.00
+
+# DATESUM with non-leap year
+ctime.days(datesum(date.mdy(1,31,1900), 1, 'months') - date.mdy(1,1,1900)) => 58.00
+ctime.days(datesum(date.mdy(1,31,1900), 2, 'months') - date.mdy(1,1,1900)) => 89.00
+ctime.days(datesum(date.mdy(1,31,1900), 3, 'months') - date.mdy(1,1,1900)) => 119.00
+ctime.days(datesum(date.mdy(1,31,1900), 4, 'months') - date.mdy(1,1,1900)) => 150.00
+ctime.days(datesum(date.mdy(1,31,1900), 5.4, 'months') - date.mdy(1,1,1900)) => 180.00
+ctime.days(datesum(date.mdy(1,31,1900), 6, 'months') - date.mdy(1,1,1900)) => 211.00
+ctime.days(datesum(date.mdy(1,31,1900), 7, 'months') - date.mdy(1,1,1900)) => 242.00
+ctime.days(datesum(date.mdy(1,31,1900), 8, 'months') - date.mdy(1,1,1900)) => 272.00
+ctime.days(datesum(date.mdy(1,31,1900), 9, 'months') - date.mdy(1,1,1900)) => 303.00
+ctime.days(datesum(date.mdy(1,31,1900), 10, 'months') - date.mdy(1,1,1900)) => 333.00
+ctime.days(datesum(date.mdy(1,31,1900), 11, 'months') - date.mdy(1,1,1900)) => 364.00
+ctime.days(datesum(date.mdy(1,31,1900), 12, 'months') - date.mdy(1,1,1900)) => 395.00
+ctime.days(datesum(date.mdy(1,31,1900), 13.9, 'months') - date.mdy(1,1,1900)) => 423.00
+ctime.days(datesum(date.mdy(1,31,1900), 1, 'months', 'rollover') - date.mdy(1,1,1900)) => 61.00
+ctime.days(datesum(date.mdy(1,31,1900), 2, 'months', 'rollover') - date.mdy(1,1,1900)) => 89.00
+ctime.days(datesum(date.mdy(1,31,1900), 3.2, 'months', 'rollover') - date.mdy(1,1,1900)) => 120.00
+ctime.days(datesum(date.mdy(1,31,1900), 4, 'months', 'rollover') - date.mdy(1,1,1900)) => 150.00
+ctime.days(datesum(date.mdy(1,31,1900), 5, 'months', 'rollover') - date.mdy(1,1,1900)) => 181.00
+ctime.days(datesum(date.mdy(1,31,1900), 6, 'months', 'rollover') - date.mdy(1,1,1900)) => 211.00
+ctime.days(datesum(date.mdy(1,31,1900), 7, 'months', 'rollover') - date.mdy(1,1,1900)) => 242.00
+ctime.days(datesum(date.mdy(1,31,1900), 8, 'months', 'rollover') - date.mdy(1,1,1900)) => 273.00
+ctime.days(datesum(date.mdy(1,31,1900), 9, 'months', 'rollover') - date.mdy(1,1,1900)) => 303.00
+ctime.days(datesum(date.mdy(1,31,1900), 10, 'months', 'rollover') - date.mdy(1,1,1900)) => 334.00
+ctime.days(datesum(date.mdy(1,31,1900), 11, 'months', 'rollover') - date.mdy(1,1,1900)) => 364.00
+ctime.days(datesum(date.mdy(1,31,1900), 12, 'months', 'rollover') - date.mdy(1,1,1900)) => 395.00
+ctime.days(datesum(date.mdy(1,31,1900), 13, 'months', 'rollover') - date.mdy(1,1,1900)) => 426.00
+
+# DATESUM with leap year
+ctime.days(datesum(date.mdy(1,31,1904), 1, 'months') - date.mdy(1,1,1904)) => 59.00
+ctime.days(datesum(date.mdy(1,31,1904), 2.5, 'months') - date.mdy(1,1,1904)) => 90.00
+ctime.days(datesum(date.mdy(1,31,1904), 3, 'months') - date.mdy(1,1,1904)) => 120.00
+ctime.days(datesum(date.mdy(1,31,1904), 4.9, 'months') - date.mdy(1,1,1904)) => 151.00
+ctime.days(datesum(date.mdy(1,31,1904), 5.1, 'months') - date.mdy(1,1,1904)) => 181.00
+ctime.days(datesum(date.mdy(1,31,1904), 6, 'months') - date.mdy(1,1,1904)) => 212.00
+ctime.days(datesum(date.mdy(1,31,1904), 7, 'months') - date.mdy(1,1,1904)) => 243.00
+ctime.days(datesum(date.mdy(1,31,1904), 8, 'months') - date.mdy(1,1,1904)) => 273.00
+ctime.days(datesum(date.mdy(1,31,1904), 9, 'months') - date.mdy(1,1,1904)) => 304.00
+ctime.days(datesum(date.mdy(1,31,1904), 10, 'months') - date.mdy(1,1,1904)) => 334.00
+ctime.days(datesum(date.mdy(1,31,1904), 11, 'months') - date.mdy(1,1,1904)) => 365.00
+ctime.days(datesum(date.mdy(1,31,1904), 12, 'months') - date.mdy(1,1,1904)) => 396.00
+ctime.days(datesum(date.mdy(1,31,1904), 13, 'months') - date.mdy(1,1,1904)) => 424.00
+ctime.days(datesum(date.mdy(1,31,1904), 1, 'months', 'rollover') - date.mdy(1,1,1904)) => 61.00
+ctime.days(datesum(date.mdy(1,31,1904), 2, 'months', 'rollover') - date.mdy(1,1,1904)) => 90.00
+ctime.days(datesum(date.mdy(1,31,1904), 3, 'months', 'rollover') - date.mdy(1,1,1904)) => 121.00
+ctime.days(datesum(date.mdy(1,31,1904), 4, 'months', 'rollover') - date.mdy(1,1,1904)) => 151.00
+ctime.days(datesum(date.mdy(1,31,1904), 5, 'months', 'rollover') - date.mdy(1,1,1904)) => 182.00
+ctime.days(datesum(date.mdy(1,31,1904), 6, 'months', 'rollover') - date.mdy(1,1,1904)) => 212.00
+ctime.days(datesum(date.mdy(1,31,1904), 7, 'months', 'rollover') - date.mdy(1,1,1904)) => 243.00
+ctime.days(datesum(date.mdy(1,31,1904), 8, 'months', 'rollover') - date.mdy(1,1,1904)) => 274.00
+ctime.days(datesum(date.mdy(1,31,1904), 9, 'months', 'rollover') - date.mdy(1,1,1904)) => 304.00
+ctime.days(datesum(date.mdy(1,31,1904), 10, 'months', 'rollover') - date.mdy(1,1,1904)) => 335.00
+ctime.days(datesum(date.mdy(1,31,1904), 11, 'months', 'rollover') - date.mdy(1,1,1904)) => 365.00
+ctime.days(datesum(date.mdy(1,31,1904), 12, 'months', 'rollover') - date.mdy(1,1,1904)) => 396.00
+ctime.days(datesum(date.mdy(1,31,1904), 13, 'months', 'rollover') - date.mdy(1,1,1904)) => 427.00
+
+ctime.days(datesum(date.mdy(6,10,1648), 1, 'weeks') - date.mdy(6,10,1648)) => 7.00
+ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'weeks') - date.mdy(6,30,1680)) => 17.50
+ctime.days(datesum(date.mdy(7,24,1716), -3, 'weeks') - date.mdy(7,24,1716)) => -21.00
+ctime.days(datesum(date.mdy(6,19,1768), 4, 'weeks') - date.mdy(6,19,1768)) => 28.00
+ctime.days(datesum(date.mdy(8,2,1819), 5, 'weeks') - date.mdy(8,2,1819)) => 35.00
+
+ctime.days(datesum(date.mdy(6,10,1648), 1, 'days') - date.mdy(6,10,1648)) => 1.00
+ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'days') - date.mdy(6,30,1680)) => 2.50
+ctime.days(datesum(date.mdy(7,24,1716), -3, 'days') - date.mdy(7,24,1716)) => -3.00
+ctime.days(datesum(date.mdy(6,19,1768), 4, 'days') - date.mdy(6,19,1768)) => 4.00
+ctime.days(datesum(date.mdy(8,2,1819), 5, 'days') - date.mdy(8,2,1819)) => 5.00
+
+ctime.days(datesum(date.mdy(6,10,1648), 1, 'hours') - date.mdy(6,10,1648)) => 0.04
+ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'hours') - date.mdy(6,30,1680)) => 0.10
+ctime.days(datesum(date.mdy(6,19,1768), -4, 'hours') - date.mdy(6,19,1768)) => -0.17
+ctime.days(datesum(date.mdy(8,2,1819), 5, 'hours') - date.mdy(8,2,1819)) => 0.21
+
 # These test values are from Applied Statistics, Algorithm AS 310.
 1000 * ncdf.beta(.868,10,20,150) => 937.66
 1000 * ncdf.beta(.9,10,10,120) => 730.68