Looks fine to me: > SELECT > (DATE '2020-03-01' - DATE '2020-01-01') YEAR AS y, > (DATE '2020-03-01' - DATE '2020-01-01') MONTH AS m, > (DATE '2020-03-01' - DATE '2020-01-01') YEAR TO MONTH AS ym; +----+----+-------+ | Y | M | YM | +----+----+-------+ | +0 | +2 | +0-02 | +----+----+-------+ 1 row selected (0.012 seconds)
Changing the first date to 2021, also looks good: > SELECT > (DATE '2021-03-01' - DATE '2020-01-01') YEAR AS y, > (DATE '2021-03-01' - DATE '2020-01-01') MONTH AS m, > (DATE '2021-03-01' - DATE '2020-01-01') YEAR TO MONTH AS ym; +----+-----+-------+ | Y | M | YM | +----+-----+-------+ | +1 | +14 | +1-02 | +----+-----+-------+ 1 row selected (0.02 seconds) > On Dec 10, 2024, at 9:04 PM, Julian Hyde <jhyde.apa...@gmail.com> wrote: > > But the type of the value is different in each case, right? > > Julian > >> On Dec 10, 2024, at 20:11, Mihai Budiu <mbu...@gmail.com> wrote: >> >> What is the semantics of subtracting two dates (times, timestamps)? >> The Calcite syntax is (d0 - d1) time_interval. >> But the following programs evaluate to the same value: >> >> SELECT (DATE '2020-03-01' - DATE '2020-01-01') YEAR >> SELECT (DATE '2020-03-01' - DATE '2020-01-01') MONTH >> SELECT (DATE '2020-03-01' - DATE '2020-01-01') YEAR TO MONTH >> >> Similar problems occur for subtracting TIME or TIMESTAMP values. >> >> Mihai