|
@@ -348,3 +348,104 @@ SELECT CONVERT(IIF(languages > 1, IIF(languages = 3, '3')), SQL_BIGINT) AS cond
|
|
|
3
|
|
|
null
|
|
|
;
|
|
|
+
|
|
|
+ifNullWithCompatibleDateBasedValues
|
|
|
+schema::replacement:ts
|
|
|
+SELECT IFNULL(birth_date, {d '2110-04-12'}) AS replacement FROM test_emp GROUP BY 1 ORDER BY replacement DESC LIMIT 5;
|
|
|
+
|
|
|
+ replacement
|
|
|
+------------------------
|
|
|
+2110-04-12T00:00:00.000Z
|
|
|
+1965-01-03T00:00:00.000Z
|
|
|
+1964-10-18T00:00:00.000Z
|
|
|
+1964-06-11T00:00:00.000Z
|
|
|
+1964-06-02T00:00:00.000Z
|
|
|
+;
|
|
|
+
|
|
|
+caseWithCompatibleIntervals_1
|
|
|
+schema::date_math:ts|c:l
|
|
|
+SELECT birth_date + (CASE WHEN gender='M' THEN INTERVAL 1 YEAR ELSE INTERVAL 6 MONTH END) AS date_math, COUNT(*) c FROM test_emp GROUP BY 1 ORDER BY 1 DESC LIMIT 5;
|
|
|
+
|
|
|
+ date_math | c
|
|
|
+------------------------+---------------
|
|
|
+1966-01-03T00:00:00.000Z|1
|
|
|
+1965-06-11T00:00:00.000Z|1
|
|
|
+1965-04-18T00:00:00.000Z|2
|
|
|
+1964-12-02T00:00:00.000Z|1
|
|
|
+1964-11-26T00:00:00.000Z|1
|
|
|
+;
|
|
|
+
|
|
|
+caseWithCompatibleIntervals_2
|
|
|
+SELECT hire_date, birth_date, (CASE WHEN birth_date > {d '1960-01-01'} THEN INTERVAL 1 YEAR ELSE INTERVAL 1 MONTH END) AS x FROM test_emp WHERE x + hire_date > {d '1995-01-01'} ORDER BY hire_date;
|
|
|
+
|
|
|
+ hire_date | birth_date | x
|
|
|
+------------------------+------------------------+---------------
|
|
|
+1994-04-09T00:00:00.000Z|1962-11-07T00:00:00.000Z|+1-0
|
|
|
+1995-01-27T00:00:00.000Z|1961-05-02T00:00:00.000Z|+1-0
|
|
|
+1995-03-13T00:00:00.000Z|1957-04-04T00:00:00.000Z|+0-1
|
|
|
+1995-03-20T00:00:00.000Z|1953-04-03T00:00:00.000Z|+0-1
|
|
|
+1995-08-22T00:00:00.000Z|1952-07-08T00:00:00.000Z|+0-1
|
|
|
+1995-12-15T00:00:00.000Z|1960-05-25T00:00:00.000Z|+1-0
|
|
|
+1996-11-05T00:00:00.000Z|1964-06-11T00:00:00.000Z|+1-0
|
|
|
+1997-05-19T00:00:00.000Z|1958-09-05T00:00:00.000Z|+0-1
|
|
|
+1999-04-30T00:00:00.000Z|1953-01-23T00:00:00.000Z|+0-1
|
|
|
+;
|
|
|
+
|
|
|
+iifWithCompatibleIntervals
|
|
|
+schema::hire_date + IIF(salary > 70000, INTERVAL 2 HOURS, INTERVAL 2 DAYS):ts|salary:i
|
|
|
+SELECT hire_date + IIF(salary > 70000, INTERVAL 2 HOURS, INTERVAL 2 DAYS), salary FROM test_emp ORDER BY salary DESC LIMIT 10;
|
|
|
+
|
|
|
+hire_date + IIF(salary > 70000, INTERVAL 2 HOURS, INTERVAL 2 DAYS)| salary
|
|
|
+------------------------------------------------------------------+---------------
|
|
|
+1985-11-20T02:00:00.000Z |74999
|
|
|
+1989-09-02T02:00:00.000Z |74970
|
|
|
+1989-02-10T02:00:00.000Z |74572
|
|
|
+1989-07-07T02:00:00.000Z |73851
|
|
|
+1999-04-30T02:00:00.000Z |73717
|
|
|
+1988-10-18T02:00:00.000Z |73578
|
|
|
+1990-09-15T02:00:00.000Z |71165
|
|
|
+1987-03-18T02:00:00.000Z |70011
|
|
|
+1987-05-28T00:00:00.000Z |69904
|
|
|
+1990-02-18T00:00:00.000Z |68547
|
|
|
+;
|
|
|
+
|
|
|
+isNullWithIntervalMath
|
|
|
+SELECT ISNULL(birth_date, INTERVAL '23:45' HOUR TO MINUTES + {d '2019-09-17'}) AS c, salary, birth_date, hire_date FROM test_emp ORDER BY salary DESC LIMIT 5;
|
|
|
+
|
|
|
+ c:ts | salary:i | birth_date:ts | hire_date:ts
|
|
|
+------------------------+-----------------+------------------------+------------------------
|
|
|
+1956-12-13T00:00:00.000Z|74999 |1956-12-13T00:00:00.000Z|1985-11-20T00:00:00.000Z
|
|
|
+2019-09-17T00:00:00.000Z|74970 |null |1989-09-02T00:00:00.000Z
|
|
|
+1957-05-23T00:00:00.000Z|74572 |1957-05-23T00:00:00.000Z|1989-02-10T00:00:00.000Z
|
|
|
+1962-07-10T00:00:00.000Z|73851 |1962-07-10T00:00:00.000Z|1989-07-07T00:00:00.000Z
|
|
|
+1953-01-23T00:00:00.000Z|73717 |1953-01-23T00:00:00.000Z|1999-04-30T00:00:00.000Z
|
|
|
+;
|
|
|
+
|
|
|
+coalesceWithCompatibleDateBasedTypes
|
|
|
+SELECT COALESCE(birth_date, CAST(birth_date AS DATE), CAST(hire_date AS DATETIME)) AS coalesce FROM test_emp ORDER BY 1 LIMIT 5;
|
|
|
+
|
|
|
+ coalesce:ts
|
|
|
+------------------------
|
|
|
+1952-02-27T00:00:00.000Z
|
|
|
+1952-04-19T00:00:00.000Z
|
|
|
+1952-05-15T00:00:00.000Z
|
|
|
+1952-06-13T00:00:00.000Z
|
|
|
+1952-07-08T00:00:00.000Z
|
|
|
+;
|
|
|
+
|
|
|
+greatestWithCompatibleDateBasedTypes
|
|
|
+SELECT GREATEST(null, null, birth_date + INTERVAL 25 YEARS, hire_date + INTERVAL 2 DAYS, CAST(hire_date + INTERVAL 2 DAYS AS DATE)) AS greatest, birth_date, hire_date FROM test_emp ORDER BY 1 LIMIT 10;
|
|
|
+
|
|
|
+ greatest:ts | birth_date:ts | hire_date:ts
|
|
|
+------------------------+------------------------+------------------------
|
|
|
+1985-02-20T00:00:00.000Z|1952-04-19T00:00:00.000Z|1985-02-18T00:00:00.000Z
|
|
|
+1985-02-26T00:00:00.000Z|null |1985-02-24T00:00:00.000Z
|
|
|
+1985-07-11T00:00:00.000Z|1952-06-13T00:00:00.000Z|1985-07-09T00:00:00.000Z
|
|
|
+1985-10-16T00:00:00.000Z|1955-08-20T00:00:00.000Z|1985-10-14T00:00:00.000Z
|
|
|
+1985-11-21T00:00:00.000Z|1957-12-03T00:00:00.000Z|1985-11-19T00:00:00.000Z
|
|
|
+1985-11-22T00:00:00.000Z|1956-12-13T00:00:00.000Z|1985-11-20T00:00:00.000Z
|
|
|
+1985-11-22T00:00:00.000Z|1959-04-07T00:00:00.000Z|1985-11-20T00:00:00.000Z
|
|
|
+1986-02-06T00:00:00.000Z|1954-09-13T00:00:00.000Z|1986-02-04T00:00:00.000Z
|
|
|
+1986-02-28T00:00:00.000Z|1952-11-13T00:00:00.000Z|1986-02-26T00:00:00.000Z
|
|
|
+1986-05-30T00:00:00.000Z|1961-05-30T00:00:00.000Z|1986-03-14T00:00:00.000Z
|
|
|
+;
|