mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
184e65954b
Update tests for version 10.4
467 lines
13 KiB
Text
467 lines
13 KiB
Text
SET sql_mode=IF(@@version LIKE '%MariaDB%', 'TIME_ROUND_FRACTIONAL', '');
|
|
SET @default_sql_mode=@@sql_mode;
|
|
|
|
CREATE TABLE t1_datetime_in_varchar (id SERIAL, a VARCHAR(64));
|
|
INSERT INTO t1_datetime_in_varchar (a) VALUES
|
|
('2000-12-31 23:59:59'),
|
|
('2000-12-31 23:59:59.9'),
|
|
('2000-12-31 23:59:59.99'),
|
|
('2000-12-31 23:59:59.999'),
|
|
('2000-12-31 23:59:59.9999'),
|
|
('2000-12-31 23:59:59.99999'),
|
|
('2000-12-31 23:59:59.999999'),
|
|
('2000-12-31 23:59:59.9999999');
|
|
|
|
CREATE TABLE t1_datetime_in_decimal (id SERIAL, a DECIMAL(38,10));
|
|
INSERT INTO t1_datetime_in_decimal (a) VALUES
|
|
(20001231235959),
|
|
(20001231235959.9),
|
|
(20001231235959.99),
|
|
(20001231235959.999),
|
|
(20001231235959.9999),
|
|
(20001231235959.99999),
|
|
(20001231235959.999999),
|
|
(20001231235959.9999999);
|
|
|
|
|
|
CREATE TABLE t1_time_in_varchar (id SERIAL, a VARCHAR(64));
|
|
INSERT INTO t1_time_in_varchar (a) VALUES
|
|
('00:00:00'),
|
|
('00:00:00.9'),
|
|
('00:00:00.99'),
|
|
('00:00:00.999'),
|
|
('00:00:00.9999'),
|
|
('00:00:00.99999'),
|
|
('00:00:00.999999'),
|
|
('00:00:00.9999999');
|
|
INSERT INTO t1_time_in_varchar (a) VALUES
|
|
('837:59:59.9999999'),
|
|
('838:59:59'),
|
|
('838:59:59.9'),
|
|
('838:59:59.99'),
|
|
('838:59:59.999'),
|
|
('838:59:59.9999'),
|
|
('838:59:59.99999'),
|
|
('838:59:59.999999'),
|
|
('838:59:59.9999999'),
|
|
('839:59:59.9999999'),
|
|
('87649414:59:59.999999'),
|
|
('87649414:59:59.9999999'),
|
|
('87649415:59:59.999999'),
|
|
('87649415:59:59.9999999');
|
|
|
|
|
|
CREATE TABLE t1_time_in_decimal (id SERIAL, a DECIMAL(38,10));
|
|
INSERT INTO t1_time_in_decimal (a) VALUES
|
|
(0),
|
|
(0.9),
|
|
(0.99),
|
|
(0.999),
|
|
(0.9999),
|
|
(0.99999),
|
|
(0.999999),
|
|
(0.9999999);
|
|
INSERT INTO t1_time_in_decimal (a) VALUES
|
|
(8375959.9999999),
|
|
(8385959),
|
|
(8385959.9),
|
|
(8385959.99),
|
|
(8385959.999),
|
|
(8385959.9999),
|
|
(8385959.99999),
|
|
(8385959.999999),
|
|
(8385959.9999999),
|
|
(8395959.9999999),
|
|
(876494145959.999999),
|
|
(876494145959.9999999),
|
|
(876494155959.999999),
|
|
(876494155959.9999999);
|
|
|
|
--echo #
|
|
--echo # TIME: LEAST/GREATEST
|
|
--echo #
|
|
|
|
SELECT GREATEST(TIME'00:00:00', a) FROM t1_time_in_varchar;
|
|
SELECT GREATEST(TIME'00:00:00', a) FROM t1_time_in_decimal;
|
|
|
|
SELECT GREATEST(TIME'00:00:00', '00:00:00.0000004');
|
|
SELECT GREATEST(TIME'00:00:00', 0.0000004);
|
|
|
|
SELECT GREATEST(TIME'00:00:00', '00:00:00.0000005');
|
|
SELECT GREATEST(TIME'00:00:00', 0.0000005);
|
|
|
|
|
|
--echo #
|
|
--echo # Functions with a single TIME input, conversion from DATETIME-in-VARCHAR
|
|
--echo #
|
|
|
|
SELECT SECOND(a), CAST(a AS TIME(6)), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
SELECT MINUTE(a), CAST(a AS TIME(6)), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
SELECT HOUR(a), CAST(a AS TIME(6)), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
|
|
SELECT EXTRACT(SECOND FROM a), CAST(a AS TIME(6)), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
SELECT EXTRACT(MINUTE FROM a), CAST(a AS TIME(6)), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
SELECT EXTRACT(HOUR FROM a), CAST(a AS TIME(6)), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
|
|
SELECT TIME_TO_SEC(a), CAST(a AS TIME(6)), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
|
|
|
|
--echo #
|
|
--echo # Functions with a single TIME input, conversion from DATETIME-in-DECIMAL
|
|
--echo #
|
|
|
|
|
|
SELECT SECOND(a), CAST(a AS TIME(6)), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SELECT MINUTE(a), CAST(a AS TIME(6)), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SELECT HOUR(a), CAST(a AS TIME(6)), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
|
|
SELECT EXTRACT(SECOND FROM a), CAST(a AS TIME(6)), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SELECT EXTRACT(MINUTE FROM a), CAST(a AS TIME(6)), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SELECT EXTRACT(HOUR FROM a), CAST(a AS TIME(6)), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
|
|
SELECT TIME_TO_SEC(a), CAST(a AS TIME(6)), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
|
|
|
|
--echo #
|
|
--echo # Functions with a single TIME interval input, conversion from TIME-interval-in-VARCHAR
|
|
--echo #
|
|
|
|
#enable after fix MDEV-29525
|
|
--disable_view_protocol
|
|
SELECT
|
|
EXTRACT(DAY FROM a),
|
|
EXTRACT(HOUR FROM a),
|
|
EXTRACT(MINUTE FROM a),
|
|
EXTRACT(SECOND FROM a),
|
|
EXTRACT(MICROSECOND FROM a),
|
|
CAST(a AS INTERVAL DAY_SECOND(6)),
|
|
a
|
|
FROM t1_time_in_varchar ORDER BY id;
|
|
--enable_view_protocol
|
|
|
|
SELECT
|
|
TIME_TO_SEC(a),
|
|
CAST(a AS TIME(6)),
|
|
a
|
|
FROM t1_time_in_varchar ORDER BY id;
|
|
|
|
--echo #
|
|
--echo # Functions with a single TIME interval input, conversion from TIME-interval-in-DECIMAL
|
|
--echo #
|
|
|
|
#enable after fix MDEV-29525
|
|
--disable_view_protocol
|
|
SELECT
|
|
EXTRACT(DAY FROM a),
|
|
EXTRACT(HOUR FROM a),
|
|
EXTRACT(MINUTE FROM a),
|
|
EXTRACT(SECOND FROM a),
|
|
EXTRACT(MICROSECOND FROM a),
|
|
CAST(a AS INTERVAL DAY_SECOND(6)),
|
|
a
|
|
FROM t1_time_in_decimal ORDER BY id;
|
|
--enable_view_protocol
|
|
|
|
SELECT
|
|
TIME_TO_SEC(a),
|
|
CAST(a AS TIME(6)),
|
|
a
|
|
FROM t1_time_in_decimal ORDER BY id;
|
|
|
|
|
|
--echo #
|
|
--echo # Functions with a single DATE input, conversion from DATETIME-in-VARCHAR
|
|
--echo #
|
|
|
|
SELECT QUARTER(a), CAST(a AS DATE), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
SELECT DAY(a), CAST(a AS DATE), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
SELECT MONTH(a), CAST(a AS DATE), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
SELECT YEAR(a), CAST(a AS DATE), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
|
|
SELECT DAYNAME(a), CAST(a AS DATE), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
SELECT MONTHNAME(a), CAST(a AS DATE), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
|
|
SELECT LAST_DAY(a), CAST(a AS DATE), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
SELECT TO_DAYS(a), CAST(a AS DATE), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
SELECT DAYOFYEAR(a), CAST(a AS DATE), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
|
|
|
|
CREATE TABLE t1 (a VARCHAR(32));
|
|
INSERT INTO t1 VALUES
|
|
('2002-01-05 23:59:59'),
|
|
('2002-01-05 23:59:59.999999'),
|
|
('2002-01-05 23:59:59.9999999');
|
|
SELECT YEARWEEK(a), a FROM t1;
|
|
SELECT WEEK(a), a FROM t1;
|
|
SELECT WEEKDAY(a), a FROM t1;
|
|
DROP TABLE t1;
|
|
|
|
CREATE TABLE t1 (a DECIMAL(32,9));
|
|
INSERT INTO t1 VALUES
|
|
(20020105235959),
|
|
(20020105235959.999999),
|
|
(20020105235959.9999999);
|
|
SELECT YEARWEEK(a), a FROM t1;
|
|
SELECT WEEK(a), a FROM t1;
|
|
SELECT WEEKDAY(a), a FROM t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Functions with a single DATE input, conversion from DATETIME-in-DECIMAL
|
|
--echo #
|
|
|
|
SELECT QUARTER(a), CAST(a AS DATE), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SELECT DAY(a), CAST(a AS DATE), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SELECT MONTH(a), CAST(a AS DATE), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SELECT YEAR(a), CAST(a AS DATE), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
|
|
SELECT DAYNAME(a), CAST(a AS DATE), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SELECT MONTHNAME(a), CAST(a AS DATE), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SELECT YEARWEEK(a), CAST(a AS DATE), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
|
|
SELECT LAST_DAY(a), CAST(a AS DATE), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SELECT TO_DAYS(a), CAST(a AS DATE), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SELECT DAYOFYEAR(a), CAST(a AS DATE), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SELECT DAYOFMONTH(a), CAST(a AS DATE), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
|
|
|
|
--echo #
|
|
--echo # Functions with a single DATETIME input, conversion from DATETIME-in-VARCHAR
|
|
--echo #
|
|
|
|
SELECT TO_SECONDS(a), CAST(a AS DATETIME(6)), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
|
|
SET time_zone='+00:00';
|
|
SELECT UNIX_TIMESTAMP(a), CAST(a AS DATETIME(6)), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
SET time_zone=DEFAULT;
|
|
|
|
SELECT CONVERT_TZ(a, '+00:00','+00:00'), CAST(a AS DATETIME(6)), a FROM t1_datetime_in_varchar ORDER BY id;
|
|
|
|
|
|
--echo #
|
|
--echo # Functions with a single DATETIME input, conversion from DATETIME-in-DECIMAL
|
|
--echo #
|
|
|
|
SELECT TO_SECONDS(a), CAST(a AS DATETIME(6)), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
|
|
SET time_zone='+00:00';
|
|
SELECT UNIX_TIMESTAMP(a), CAST(a AS DATETIME(6)), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
SET time_zone=DEFAULT;
|
|
|
|
SELECT CONVERT_TZ(a, '+00:00','+00:00'), CAST(a AS DATETIME(6)), a FROM t1_datetime_in_decimal ORDER BY id;
|
|
|
|
DROP TABLE t1_datetime_in_varchar;
|
|
DROP TABLE t1_datetime_in_decimal;
|
|
DROP TABLE t1_time_in_varchar;
|
|
DROP TABLE t1_time_in_decimal;
|
|
|
|
|
|
--echo #
|
|
--echo # Functions that construct DATETIME
|
|
--echo #
|
|
|
|
SET time_zone='+00:00';
|
|
CREATE TABLE t1_unix_timestamp (id SERIAL, a DECIMAL(30,10));
|
|
INSERT INTO t1_unix_timestamp (a) VALUES
|
|
(980639999),
|
|
(980639999.9),
|
|
(980639999.999999),
|
|
(980639999.9999999),
|
|
(2147483647),
|
|
(2147483647.9),
|
|
(2147483647.999999),
|
|
(2147483647.9999999);
|
|
SELECT a, FROM_UNIXTIME(a) FROM t1_unix_timestamp ORDER BY id;
|
|
DROP TABLE t1_unix_timestamp;
|
|
SET time_zone=DEFAULT;
|
|
|
|
|
|
--echo #
|
|
--echo # Functions that construct TIME
|
|
--echo #
|
|
|
|
CREATE TABLE t1_sec (id SERIAL, a DECIMAL(38,10));
|
|
INSERT INTO t1_sec (a) VALUES
|
|
(59),
|
|
(59.9),
|
|
(59.999999),
|
|
(59.9999999),
|
|
(3020398),
|
|
(3020398.999999),
|
|
(3020398.9999999),
|
|
(3020399),
|
|
(3020399.999999),
|
|
(3020399.9999999),
|
|
(9223372036854775807),
|
|
(9223372036854775807.9),
|
|
(9223372036854775807.999999),
|
|
(9223372036854775807.9999999),
|
|
(18446744073709551615),
|
|
(18446744073709551615.9),
|
|
(18446744073709551615.999999),
|
|
(18446744073709551615.9999999);
|
|
SELECT a, SEC_TO_TIME(a) FROM t1_sec ORDER BY id;
|
|
DROP TABLE t1_sec;
|
|
|
|
|
|
CREATE TABLE t1_sec (id SERIAL, a DECIMAL(38,10));
|
|
INSERT INTO t1_sec (a) VALUES
|
|
(0),
|
|
(0.9),
|
|
(0.999999),
|
|
(0.9999999);
|
|
SELECT a, MAKETIME(0, 0, a) FROM t1_sec ORDER BY id;
|
|
DROP TABLE t1_sec;
|
|
|
|
|
|
CREATE TABLE t1 (a VARCHAR(64));
|
|
INSERT INTO t1 VALUES
|
|
('2017-12-31 23:59:59'),
|
|
('2017-12-31 23:59:59.9'),
|
|
('2017-12-31 23:59:59.999999'),
|
|
('2017-12-31 23:59:59.9999999');
|
|
--vertical_results
|
|
SELECT
|
|
'----',
|
|
a,
|
|
DATE_FORMAT(a, '%Y') AS yyyy,
|
|
DATE_FORMAT(a, '%Y-%m-%d') AS d,
|
|
DATE_FORMAT(a, '%H:%i:%s') AS t0,
|
|
DATE_FORMAT(a, '%H:%i:%s.%f') AS t6,
|
|
DATE_FORMAT(a, '%Y-%m-%d %H:%i:%s') AS dt0,
|
|
DATE_FORMAT(a, '%Y-%m-%d %H:%i:%s.%f') AS dt6
|
|
FROM t1;
|
|
--horizontal_results
|
|
DROP TABLE t1;
|
|
|
|
CREATE TABLE t1 (a DECIMAL(32,9));
|
|
INSERT INTO t1 VALUES
|
|
(20171231235959),
|
|
(20171231235959.9),
|
|
(20171231235959.999999),
|
|
(20171231235959.9999999);
|
|
--vertical_results
|
|
SELECT
|
|
'----',
|
|
a,
|
|
DATE_FORMAT(a, '%Y') AS yyyy,
|
|
DATE_FORMAT(a, '%Y-%m-%d') AS d,
|
|
DATE_FORMAT(a, '%H:%i:%s') AS t0,
|
|
DATE_FORMAT(a, '%H:%i:%s.%f') AS t6,
|
|
DATE_FORMAT(a, '%Y-%m-%d %H:%i:%s') AS dt0,
|
|
DATE_FORMAT(a, '%Y-%m-%d %H:%i:%s.%f') AS dt6
|
|
FROM t1;
|
|
--horizontal_results
|
|
DROP TABLE t1;
|
|
|
|
|
|
--echo #
|
|
--echo # Functions with two temporal parameters that round nanoseconds in both parameters in MySQL
|
|
--echo #
|
|
|
|
CREATE TABLE t1 (a VARCHAR(64));
|
|
CREATE TABLE t2 (a VARCHAR(64));
|
|
INSERT INTO t1 VALUES
|
|
('2017-12-31 23:59:59'),
|
|
('2017-12-31 23:59:59.9'),
|
|
('2017-12-31 23:59:59.999999'),
|
|
('2017-12-31 23:59:59.9999999');
|
|
INSERT INTO t2 VALUES
|
|
('00:00:00'),
|
|
('00:00:00.9'),
|
|
('00:00:00.999999'),
|
|
('00:00:00.9999999');
|
|
|
|
SELECT TIMESTAMP(t1.a, t2.a), t1.a, t2.a FROM t1,t2 ORDER BY t1.a, t2.a;
|
|
SELECT ADDTIME(t1.a, t2.a), t1.a, t2.a FROM t1,t2 ORDER BY t1.a, t2.a;
|
|
|
|
DROP TABLE t1, t2;
|
|
|
|
|
|
CREATE TABLE t1 (a VARCHAR(64));
|
|
CREATE TABLE t2 (a VARCHAR(64));
|
|
INSERT INTO t1 VALUES
|
|
('23:59:59'),
|
|
('23:59:59.9'),
|
|
('23:59:59.999999'),
|
|
('23:59:59.9999999');
|
|
INSERT INTO t2 VALUES
|
|
('00:00:00'),
|
|
('00:00:00.9'),
|
|
('00:00:00.999999'),
|
|
('00:00:00.9999999');
|
|
SELECT TIMEDIFF(t1.a, t2.a), t1.a, t2.a FROM t1,t2 ORDER BY t1.a, t2.a;
|
|
DROP TABLE t1, t2;
|
|
|
|
|
|
CREATE TABLE t1 (a VARCHAR(64));
|
|
CREATE TABLE t2 (a VARCHAR(64));
|
|
INSERT INTO t1 VALUES
|
|
('2001-12-31 23:59:59'),
|
|
('2001-12-31 23:59:59.9'),
|
|
('2001-12-31 23:59:59.999999'),
|
|
('2001-12-31 23:59:59.9999999');
|
|
INSERT INTO t2 VALUES
|
|
('2001-12-31 23:59:59'),
|
|
('2001-12-31 23:59:59.9'),
|
|
('2001-12-31 23:59:59.999999'),
|
|
('2001-12-31 23:59:59.9999999');
|
|
SELECT TIMESTAMPDIFF(MICROSECOND,t1.a, t2.a), t1.a, t2.a FROM t1,t2 ORDER BY t1.a, t2.a;
|
|
DROP TABLE t1, t2;
|
|
|
|
CREATE TABLE t1 (a VARCHAR(64));
|
|
CREATE TABLE t2 (a VARCHAR(64));
|
|
INSERT INTO t1 VALUES
|
|
('23:59:59'),
|
|
('23:59:59.9'),
|
|
('23:59:59.999999'),
|
|
('23:59:59.9999999');
|
|
INSERT INTO t2 VALUES
|
|
('00:00:00'),
|
|
('00:00:00.9'),
|
|
('00:00:00.999999'),
|
|
('00:00:00.9999999');
|
|
SELECT TIMEDIFF(t1.a, t2.a), t1.a, t2.a FROM t1,t2 ORDER BY t1.a, t2.a;
|
|
DROP TABLE t1, t2;
|
|
|
|
|
|
--echo #
|
|
--echo # STR_TO_DATE behaviour is questionable in MySQL 5.6 (MySQL Bug #92474)
|
|
--echo #
|
|
|
|
--echo # It truncates nanoseconds, but this may change in the future.
|
|
CREATE TABLE t1 (a VARCHAR(64));
|
|
INSERT INTO t1 VALUES
|
|
('2017-12-31 23:59:59'),
|
|
('2017-12-31 23:59:59.9'),
|
|
('2017-12-31 23:59:59.999999'),
|
|
('2017-12-31 23:59:59.9999999');
|
|
|
|
SELECT
|
|
a,
|
|
STR_TO_DATE(a, '%Y-%m-%d %H:%i:%s') AS c0,
|
|
STR_TO_DATE(a, '%Y-%m-%d %H:%i:%s.%f') AS c6
|
|
FROM t1;
|
|
DROP TABLE t1;
|
|
|
|
|
|
--echo #
|
|
--echo # DATE_ADD behaviour is questionable in MySQL 5.6 (MySQL Bug#92473)
|
|
--echo # It rounds nanoseconds in the first argument, but truncates nanoseconds in the second argument.
|
|
--echo # This may change in the future, to round both arguments.
|
|
--echo #
|
|
|
|
CREATE TABLE t1 (a VARCHAR(64));
|
|
INSERT INTO t1 VALUES
|
|
('2017-12-31 23:59:59'),
|
|
('2017-12-31 23:59:59.9'),
|
|
('2017-12-31 23:59:59.999999'),
|
|
('2017-12-31 23:59:59.9999999');
|
|
CREATE TABLE t2 (b DECIMAL(32,9));
|
|
INSERT INTO t2 VALUES
|
|
(0),
|
|
(0.9),
|
|
(0.999999),
|
|
(0.9999999);
|
|
SELECT a, b, DATE_ADD(a, INTERVAL b SECOND) FROM t1,t2 ORDER BY a,b;
|
|
DROP TABLE t1, t2;
|