mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			472 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			472 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;
 | |
| 
 | |
| #check after fix MDEV-31555
 | |
| --disable_cursor_protocol
 | |
| SELECT LAST_DAY(a), CAST(a AS DATE), a FROM t1_datetime_in_varchar ORDER BY id;
 | |
| --enable_cursor_protocol
 | |
| 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;
 | |
| 
 | |
| #check after fix MDEV-31555
 | |
| --disable_cursor_protocol
 | |
| SELECT LAST_DAY(a), CAST(a AS DATE), a FROM t1_datetime_in_decimal ORDER BY id;
 | |
| --enable_cursor_protocol
 | |
| 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);
 | |
| 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;
 | 
