DROP TABLE IF EXISTS t1, t2;
SET NAMES latin1;
#
# Testing DATE literals
#
SELECT DATE'xxxx' ;
ERROR HY000: Incorrect DATE value: 'xxxx'
SELECT DATE'01' ;
ERROR HY000: Incorrect DATE value: '01'
SELECT DATE'01-01' ;
ERROR HY000: Incorrect DATE value: '01-01'
SELECT DATE'2001' ;
ERROR HY000: Incorrect DATE value: '2001'
SELECT DATE'2001-01' ;
ERROR HY000: Incorrect DATE value: '2001-01'
SELECT DATE'2001-00-00' ;
DATE'2001-00-00'
2001 -00 -00
SELECT DATE'2001-01-00' ;
DATE'2001-01-00'
2001 -01 -00
SELECT DATE'0000-00-00' ;
DATE'0000-00-00'
0000 -00 -00
SELECT DATE'2001-01-01 00:00:00' ;
ERROR HY000: Incorrect DATE value: '2001-01-01 00:00:00'
SELECT DATE'01:01:01' ;
DATE'01:01:01'
2001 -01 -01
SELECT DATE'01-01-01' ;
DATE'01-01-01'
2001 -01 -01
SELECT DATE'2010-01-01' ;
DATE'2010-01-01'
2010 -01 -01
SELECT DATE '2010-01-01' ;
DATE '2010-01-01'
2010 -01 -01
CREATE TABLE t1 AS SELECT DATE'2010-01-01' ;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`DATE'2010-01-01' ` date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
DROP TABLE t1;
CREATE TABLE t1 AS SELECT
{d'2001-01-01' },
{ d '2001-01-01' },
{d'2001-01-01 10:10:10' };
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`{d'2001-01-01' }` date NOT NULL,
`{ d '2001-01-01' }` date NOT NULL,
`2001 -01 -01 10 :10 :10 ` varchar(19 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
DROP TABLE t1;
EXPLAIN EXTENDED SELECT {d'2010-01-01' };
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1003 select DATE'2010-01-01' AS `{d'2010-01-01' }`
EXPLAIN EXTENDED SELECT DATE'2010-01-01' ;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1003 select DATE'2010-01-01' AS `DATE'2010-01-01' `
#
# Testing DATE literals in non-default sql_mode
#
SET sql_mode=no_zero_in_date;
SELECT DATE'2001-00-00' ;
ERROR HY000: Incorrect DATE value: '2001-00-00'
SELECT DATE'2001-01-00' ;
ERROR HY000: Incorrect DATE value: '2001-01-00'
SELECT DATE'0000-00-00' ;
DATE'0000-00-00'
0000 -00 -00
SET sql_mode=no_zero_date;
SELECT DATE'0000-00-00' ;
ERROR HY000: Incorrect DATE value: '0000-00-00'
SET sql_mode=default;
#
# Testing TIME literals
#
SELECT TIME'xxxx' ;
ERROR HY000: Incorrect TIME value: 'xxxx'
SELECT TIME'900:00:00' ;
ERROR HY000: Incorrect TIME value: '900:00:00'
SELECT TIME'-900:00:00' ;
ERROR HY000: Incorrect TIME value: '-900:00:00'
SELECT TIME'1 24:00:00' ;
TIME'1 24:00:00'
48 :00 :00
SELECT TIME'30 24:00:00' ;
TIME'30 24:00:00'
744 :00 :00
SELECT TIME'0000-00-00 00:00:00' ;
ERROR HY000: Incorrect TIME value: '0000-00-00 00:00:00'
SELECT TIME'40 24:00:00' ;
ERROR HY000: Incorrect TIME value: '40 24:00:00'
SELECT TIME'10' ;
TIME'10'
00 :00 :10
SELECT TIME'10:10' ;
TIME'10:10'
10 :10 :00
SELECT TIME'10:11.12' ;
TIME'10:11.12'
10 :11 :00 .12
SELECT TIME'10:10:10' ;
TIME'10:10:10'
10 :10 :10
SELECT TIME'10:10:10.' ;
TIME'10:10:10.'
10 :10 :10
SELECT TIME'10:10:10.1' ;
TIME'10:10:10.1'
10 :10 :10 .1
SELECT TIME'10:10:10.12' ;
TIME'10:10:10.12'
10 :10 :10 .12
SELECT TIME'10:10:10.123' ;
TIME'10:10:10.123'
10 :10 :10 .123
SELECT TIME'10:10:10.1234' ;
TIME'10:10:10.1234'
10 :10 :10 .1234
SELECT TIME'10:10:10.12345' ;
TIME'10:10:10.12345'
10 :10 :10 .12345
SELECT TIME'10:10:10.123456' ;
TIME'10:10:10.123456'
10 :10 :10 .123456
SELECT TIME'-10:00:00' ;
TIME'-10:00:00'
-10 :00 :00
SELECT TIME '10:11:12' ;
TIME '10:11:12'
10 :11 :12
CREATE TABLE t1 AS SELECT
TIME'10:10:10' ,
TIME'10:10:10.' ,
TIME'10:10:10.1' ,
TIME'10:10:10.12' ,
TIME'10:10:10.123' ,
TIME'10:10:10.1234' ,
TIME'10:10:10.12345' ,
TIME'10:10:10.123456' ;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`TIME'10:10:10' ` time NOT NULL,
`TIME'10:10:10.' ` time NOT NULL,
`TIME'10:10:10.1' ` time(1 ) NOT NULL,
`TIME'10:10:10.12' ` time(2 ) NOT NULL,
`TIME'10:10:10.123' ` time(3 ) NOT NULL,
`TIME'10:10:10.1234' ` time(4 ) NOT NULL,
`TIME'10:10:10.12345' ` time(5 ) NOT NULL,
`TIME'10:10:10.123456' ` time(6 ) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
DROP TABLE t1;
CREATE TABLE t1 AS SELECT
{t'10:10:10' },
{ t '10:10:10' },
{t'10:10:10.' },
{t'10:10:10.123456' },
{t'2001-01-01' };
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`{t'10:10:10' }` time NOT NULL,
`{ t '10:10:10' }` time NOT NULL,
`{t'10:10:10.' }` time NOT NULL,
`{t'10:10:10.123456' }` time(6 ) NOT NULL,
`2001 -01 -01 ` varchar(10 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
DROP TABLE t1;
EXPLAIN EXTENDED SELECT {t'10:01:01' };
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1003 select TIME'10:01:01' AS `{t'10:01:01' }`
EXPLAIN EXTENDED SELECT TIME'10:01:01' ;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1003 select TIME'10:01:01' AS `TIME'10:01:01' `
#
# Testing TIMESTAMP literals
#
SELECT TIMESTAMP'xxxx' ;
ERROR HY000: Incorrect DATETIME value: 'xxxx'
SELECT TIMESTAMP'2010' ;
ERROR HY000: Incorrect DATETIME value: '2010'
SELECT TIMESTAMP'2010-01' ;
ERROR HY000: Incorrect DATETIME value: '2010-01'
SELECT TIMESTAMP'2010-01-01' ;
ERROR HY000: Incorrect DATETIME value: '2010-01-01'
SELECT TIMESTAMP'2010-01-01 00' ;
TIMESTAMP'2010-01-01 00'
2010 -01 -01 00 :00 :00
SELECT TIMESTAMP'2010-01-01 00:01' ;
TIMESTAMP'2010-01-01 00:01'
2010 -01 -01 00 :01 :00
SELECT TIMESTAMP'2010-01-01 10:10:10' ;
TIMESTAMP'2010-01-01 10:10:10'
2010 -01 -01 10 :10 :10
SELECT TIMESTAMP'2010-01-01 10:10:10.' ;
TIMESTAMP'2010-01-01 10:10:10.'
2010 -01 -01 10 :10 :10
SELECT TIMESTAMP'2010-01-01 10:10:10.1' ;
TIMESTAMP'2010-01-01 10:10:10.1'
2010 -01 -01 10 :10 :10 .1
SELECT TIMESTAMP'2010-01-01 10:10:10.12' ;
TIMESTAMP'2010-01-01 10:10:10.12'
2010 -01 -01 10 :10 :10 .12
SELECT TIMESTAMP'2010-01-01 10:10:10.123' ;
TIMESTAMP'2010-01-01 10:10:10.123'
2010 -01 -01 10 :10 :10 .123
SELECT TIMESTAMP'2010-01-01 10:10:10.1234' ;
TIMESTAMP'2010-01-01 10:10:10.1234'
2010 -01 -01 10 :10 :10 .1234
SELECT TIMESTAMP'2010-01-01 10:10:10.12345' ;
TIMESTAMP'2010-01-01 10:10:10.12345'
2010 -01 -01 10 :10 :10 .12345
SELECT TIMESTAMP'2010-01-01 10:10:10.123456' ;
TIMESTAMP'2010-01-01 10:10:10.123456'
2010 -01 -01 10 :10 :10 .123456
SELECT TIMESTAMP '2010-01-01 10:20:30' ;
TIMESTAMP '2010-01-01 10:20:30'
2010 -01 -01 10 :20 :30
CREATE TABLE t1 AS SELECT
TIMESTAMP'2010-01-01 10:10:10' ,
TIMESTAMP'2010-01-01 10:10:10.' ,
TIMESTAMP'2010-01-01 10:10:10.1' ,
TIMESTAMP'2010-01-01 10:10:10.12' ,
TIMESTAMP'2010-01-01 10:10:10.123' ,
TIMESTAMP'2010-01-01 10:10:10.1234' ,
TIMESTAMP'2010-01-01 10:10:10.12345' ,
TIMESTAMP'2010-01-01 10:10:10.123456' ;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`TIMESTAMP'2010-01-01 10:10:10' ` datetime NOT NULL,
`TIMESTAMP'2010-01-01 10:10:10.' ` datetime NOT NULL,
`TIMESTAMP'2010-01-01 10:10:10.1' ` datetime(1 ) NOT NULL,
`TIMESTAMP'2010-01-01 10:10:10.12' ` datetime(2 ) NOT NULL,
`TIMESTAMP'2010-01-01 10:10:10.123' ` datetime(3 ) NOT NULL,
`TIMESTAMP'2010-01-01 10:10:10.1234' ` datetime(4 ) NOT NULL,
`TIMESTAMP'2010-01-01 10:10:10.12345' ` datetime(5 ) NOT NULL,
`TIMESTAMP'2010-01-01 10:10:10.123456' ` datetime(6 ) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
DROP TABLE t1;
CREATE TABLE t1 AS SELECT
{ts'2001-01-01 10:10:10' },
{ ts '2001-01-01 10:10:10' },
{ts'2001-01-01 10:10:10.' },
{ts'2001-01-01 10:10:10.123456' },
{ts'2001-01-01' };
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`{ts'2001-01-01 10:10:10' }` datetime NOT NULL,
`{ ts '2001-01-01 10:10:10' }` datetime NOT NULL,
`{ts'2001-01-01 10:10:10.' }` datetime NOT NULL,
`{ts'2001-01-01 10:10:10.123456' }` datetime(6 ) NOT NULL,
`2001 -01 -01 ` varchar(10 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
DROP TABLE t1;
EXPLAIN EXTENDED SELECT {ts'2010-01-01 10:10:10' };
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1003 select TIMESTAMP'2010-01-01 10:10:10' AS `{ts'2010-01-01 10:10:10' }`
EXPLAIN EXTENDED SELECT TIMESTAMP'2010-01-01 10:10:10' ;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1003 select TIMESTAMP'2010-01-01 10:10:10' AS `TIMESTAMP'2010-01-01 10:10:10' `
#
# Testing nanosecond rounding for TIMESTAMP literals with bad dates
#
SELECT TIMESTAMP'2001-00-00 00:00:00.999999' ;
TIMESTAMP'2001-00-00 00:00:00.999999'
2001 -00 -00 00 :00 :00 .999999
SELECT TIMESTAMP'2001-00-01 00:00:00.999999' ;
TIMESTAMP'2001-00-01 00:00:00.999999'
2001 -00 -01 00 :00 :00 .999999
SELECT TIMESTAMP'2001-01-00 00:00:00.999999' ;
TIMESTAMP'2001-01-00 00:00:00.999999'
2001 -01 -00 00 :00 :00 .999999
SELECT TIMESTAMP'2001-00-00 00:00:00.9999999' ;
TIMESTAMP'2001-00-00 00:00:00.9999999'
2001 -00 -00 00 :00 :00 .999999
Warnings:
Note 1292 Truncated incorrect DATETIME value: '2001-00-00 00:00:00.9999999'
SELECT TIMESTAMP'2001-00-01 00:00:00.9999999' ;
TIMESTAMP'2001-00-01 00:00:00.9999999'
2001 -00 -01 00 :00 :00 .999999
Warnings:
Note 1292 Truncated incorrect DATETIME value: '2001-00-01 00:00:00.9999999'
SELECT TIMESTAMP'2001-01-00 00:00:00.9999999' ;
TIMESTAMP'2001-01-00 00:00:00.9999999'
2001 -01 -00 00 :00 :00 .999999
Warnings:
Note 1292 Truncated incorrect DATETIME value: '2001-01-00 00:00:00.9999999'
#
# String literal with bad dates and nanoseconds to DATETIME(N)
#
CREATE TABLE t1 (a DATETIME(6 ));
INSERT INTO t1 VALUES ('2001-00-00 00:00:00.9999999' );
Warnings:
Note 1265 Data truncated for column 'a' at row 1
INSERT INTO t1 VALUES ('2001-00-01 00:00:00.9999999' );
Warnings:
Note 1265 Data truncated for column 'a' at row 1
INSERT INTO t1 VALUES ('2001-01-00 00:00:00.9999999' );
Warnings:
Note 1265 Data truncated for column 'a' at row 1
SELECT * FROM t1;
a
2001 -00 -00 00 :00 :00 .999999
2001 -00 -01 00 :00 :00 .999999
2001 -01 -00 00 :00 :00 .999999
DROP TABLE t1;
CREATE TABLE t1 (a DATETIME(5 ));
INSERT INTO t1 VALUES ('2001-00-00 00:00:00.9999999' );
Warnings:
Note 1265 Data truncated for column 'a' at row 1
INSERT INTO t1 VALUES ('2001-00-01 00:00:00.9999999' );
Warnings:
Note 1265 Data truncated for column 'a' at row 1
INSERT INTO t1 VALUES ('2001-01-00 00:00:00.9999999' );
Warnings:
Note 1265 Data truncated for column 'a' at row 1
SELECT * FROM t1;
a
2001 -00 -00 00 :00 :00 .99999
2001 -00 -01 00 :00 :00 .99999
2001 -01 -00 00 :00 :00 .99999
DROP TABLE t1;
CREATE TABLE t1 (a DATETIME);
INSERT INTO t1 VALUES ('2001-00-00 00:00:00.9999999' );
Warnings:
Note 1265 Data truncated for column 'a' at row 1
INSERT INTO t1 VALUES ('2001-00-01 00:00:00.9999999' );
Warnings:
Note 1265 Data truncated for column 'a' at row 1
INSERT INTO t1 VALUES ('2001-01-00 00:00:00.9999999' );
Warnings:
Note 1265 Data truncated for column 'a' at row 1
SELECT * FROM t1;
a
2001 -00 -00 00 :00 :00
2001 -00 -01 00 :00 :00
2001 -01 -00 00 :00 :00
DROP TABLE t1;
#
# Testing Item_date_literal::eq
#
CREATE TABLE t1 (a DATE);
INSERT INTO t1 VALUES ('2001-01-01' ),('2003-01-01' );
SELECT * FROM t1 WHERE a BETWEEN DATE'2001-01-01' AND DATE'2002-01-01' ;
a
2001 -01 -01
SELECT DATE'2001-01-01' FROM t1 GROUP BY DATE'2001-01-01' ;
DATE'2001-01-01'
2001 -01 -01
DROP TABLE t1;
#
# TIME literals in no-zero date context
#
SET timestamp=unix_timestamp('2001-02-03 10:20:30' );
SELECT TO_DAYS(TIME'00:00:00' );
TO_DAYS(TIME'00:00:00' )
730884
SELECT TO_SECONDS(TIME'00:00:00' );
TO_SECONDS(TIME'00:00:00' )
63148377600
SELECT DAYOFYEAR(TIME'00:00:00' );
DAYOFYEAR(TIME'00:00:00' )
34
SELECT WEEK(TIME'00:00:00' );
WEEK(TIME'00:00:00' )
4
SELECT YEARWEEK(TIME'00:00:00' );
YEARWEEK(TIME'00:00:00' )
200104
SELECT WEEKDAY(TIME'00:00:00' );
WEEKDAY(TIME'00:00:00' )
5
SELECT CONVERT_TZ(TIME'00:00:00' ,'+00:00' ,'+01:00' );
CONVERT_TZ(TIME'00:00:00' ,'+00:00' ,'+01:00' )
2001 -02 -03 01 :00 :00
SELECT DATE_ADD(TIME'00:00:00' , INTERVAL 1 HOUR);
DATE_ADD(TIME'00:00:00' , INTERVAL 1 HOUR)
01 :00 :00
SELECT TIMESTAMPDIFF(SECOND,TIME'00:00:00' , TIME'00:00:00' );
TIMESTAMPDIFF(SECOND,TIME'00:00:00' , TIME'00:00:00' )
0
SET timestamp=DEFAULT;
#
# Testing Item_func::fix_fields()
#
SELECT 'a' LIKE 'a' ESCAPE DATE'2001-01-01' ;
ERROR HY000: Incorrect arguments to ESCAPE
SELECT 'a' LIKE 'a' ESCAPE TIMESTAMP'2001-01-01 00:00:00' ;
ERROR HY000: Incorrect arguments to ESCAPE
SELECT 'a' LIKE 'a' ESCAPE TIME'00:00:00' ;
ERROR HY000: Incorrect arguments to ESCAPE
#
# MDEV-4871 Temporal literals do not accept nanoseconds
#
SELECT TIME'10:10:10.1234567' ;
TIME'10:10:10.1234567'
10 :10 :10 .123456
Warnings:
Note 1292 Truncated incorrect TIME value: '10:10:10.1234567'
SELECT TIME('10:10:10.1234567' );
TIME('10:10:10.1234567' )
10 :10 :10 .123456
Warnings:
Note 1292 Truncated incorrect time value: '10:10:10.1234567'
SELECT TIME'10:10:10.123456xyz' ;
ERROR HY000: Incorrect TIME value: '10:10:10.123456xyz'
SELECT TIME'10:10:10.1234567xyz' ;
ERROR HY000: Incorrect TIME value: '10:10:10.1234567xyz'
SELECT TIME('10:10:10.123456xyz' );
TIME('10:10:10.123456xyz' )
10 :10 :10 .123456
Warnings:
Warning 1292 Truncated incorrect time value: '10:10:10.123456xyz'
SELECT TIME('10:10:10.1234567xyz' );
TIME('10:10:10.1234567xyz' )
10 :10 :10 .123456
Warnings:
Warning 1292 Truncated incorrect time value: '10:10:10.1234567xyz'
SELECT TIMESTAMP'2001-01-01 10:10:10.1234567' ;
TIMESTAMP'2001-01-01 10:10:10.1234567'
2001 -01 -01 10 :10 :10 .123456
Warnings:
Note 1292 Truncated incorrect DATETIME value: '2001-01-01 10:10:10.1234567'
SELECT TIMESTAMP('2001-01-01 10:10:10.1234567' );
TIMESTAMP('2001-01-01 10:10:10.1234567' )
2001 -01 -01 10 :10 :10 .123456
Warnings:
Note 1292 Truncated incorrect datetime value: '2001-01-01 10:10:10.1234567'
SELECT TIMESTAMP'2001-01-01 10:10:10.123456xyz' ;
ERROR HY000: Incorrect DATETIME value: '2001-01-01 10:10:10.123456xyz'
SELECT TIMESTAMP'2001-01-01 10:10:10.1234567xyz' ;
ERROR HY000: Incorrect DATETIME value: '2001-01-01 10:10:10.1234567xyz'
SELECT TIMESTAMP('2001-01-01 10:10:10.123456xyz' );
TIMESTAMP('2001-01-01 10:10:10.123456xyz' )
2001 -01 -01 10 :10 :10 .123456
Warnings:
Warning 1292 Truncated incorrect datetime value: '2001-01-01 10:10:10.123456xyz'
SELECT TIMESTAMP('2001-01-01 10:10:10.1234567xyz' );
TIMESTAMP('2001-01-01 10:10:10.1234567xyz' )
2001 -01 -01 10 :10 :10 .123456
Warnings:
Warning 1292 Truncated incorrect datetime value: '2001-01-01 10:10:10.1234567xyz'
CREATE TABLE t1 (a TIME(6 ));
INSERT INTO t1 VALUES (TIME'10:20:30.1234567' );
Warnings:
Note 1292 Truncated incorrect TIME value: '10:20:30.1234567'
INSERT INTO t1 VALUES (TIME('10:20:30.1234567' ));
Warnings:
Note 1292 Truncated incorrect time value: '10:20:30.1234567'
SELECT * FROM t1;
a
10 :20 :30 .123456
10 :20 :30 .123456
DROP TABLE t1;
#
# MDEV-5969 Crash in prepared statement with NO_ZERO_IN_DATE and ROLLUP
#
CREATE TABLE t1
(
year INT NOT NULL,
product VARCHAR(32 ) NOT NULL,
profit INT
);
INSERT INTO t1 VALUES ('2001' ,'car' ,101 );
INSERT INTO t1 VALUES ('2001' ,'gas' ,102 );
INSERT INTO t1 VALUES ('2001' ,'toy' ,103 );
INSERT INTO t1 VALUES ('2002' ,'car' ,201 );
INSERT INTO t1 VALUES ('2002' ,'gas' ,202 );
INSERT INTO t1 VALUES ('2002' ,'toy' ,203 );
SET sql_mode=DEFAULT;
PREPARE stmt FROM "SELECT DATE'2001-00-00' AS c,year, SUM(profit) FROM t1 GROUP BY c,year WITH ROLLUP" ;
EXECUTE stmt;
c year SUM(profit)
2001 -00 -00 2001 306
2001 -00 -00 2002 606
2001 -00 -00 NULL 912
NULL NULL 912
SET sql_mode='no_zero_in_date' ;
EXECUTE stmt;
c year SUM(profit)
NULL 2001 306
NULL 2002 606
NULL NULL 912
NULL NULL 912
Warnings:
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
Warning 1292 Incorrect datetime value: '2001-00-00'
SET sql_mode=DEFAULT;
DROP TABLE t1;
#
# MDEV-5971 Asymmetry between CAST(DATE'2001-00-00' ) to INT and TO CHAR in prepared statements
#
SET sql_mode=DEFAULT;
PREPARE stmt FROM "SELECT CAST(DATE'2001-00-00' AS SIGNED) AS c" ;
SET sql_mode='no_zero_in_date' ;
EXECUTE stmt;
c
NULL
Warnings:
Warning 1292 Incorrect datetime value: '2001-00-00'
SET sql_mode=DEFAULT;
PREPARE stmt FROM "SELECT CAST(DATE'2001-00-00' AS CHAR) AS c" ;
SET sql_mode='no_zero_in_date' ;
EXECUTE stmt;
c
NULL
Warnings:
Warning 1292 Incorrect datetime value: '2001-00-00'
SET sql_mode=DEFAULT;
PREPARE stmt FROM "SELECT CAST(DATE'2001-00-00' AS DECIMAL(30,0)) AS c" ;
SET sql_mode='no_zero_in_date' ;
EXECUTE stmt;
c
NULL
Warnings:
Warning 1292 Incorrect datetime value: '2001-00-00'
SET sql_mode=DEFAULT;
PREPARE stmt FROM "SELECT CAST(DATE'2001-00-00' AS DOUBLE) AS c" ;
SET sql_mode='no_zero_in_date' ;
EXECUTE stmt;
c
NULL
Warnings:
Warning 1292 Incorrect datetime value: '2001-00-00'
#
# Zero month or zero day automatically mean NULL flag, no matter SQL_MODE is.
# Only zero year is OK for NOT NULL.
#
SET sql_mode=DEFAULT;
PREPARE stmt FROM "CREATE TABLE t1 AS SELECT CAST(DATE'2001-00-00' AS CHAR) AS c" ;
EXECUTE stmt;
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
c varchar(10 ) YES NULL
SELECT * FROM t1;
c
2001 -00 -00
DROP TABLE t1;
SET sql_mode='no_zero_in_date' ;
EXECUTE stmt;
Warnings:
Warning 1292 Incorrect datetime value: '2001-00-00'
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
c varchar(10 ) YES NULL
SELECT * FROM t1;
c
NULL
DROP TABLE t1;
SET sql_mode=DEFAULT;
CREATE TABLE t1 AS SELECT
DATE'2001-01-01' ,
DATE'0000-01-01' ,
DATE'2001-00-00' ,
DATE'2001-00-01' ,
DATE'2001-01-00' ;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`DATE'2001-01-01' ` date NOT NULL,
`DATE'0000-01-01' ` date NOT NULL,
`DATE'2001-00-00' ` date DEFAULT NULL,
`DATE'2001-00-01' ` date DEFAULT NULL,
`DATE'2001-01-00' ` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
DROP TABLE t1;
CREATE TABLE t1 AS SELECT
TIMESTAMP'2001-01-01 00:00:00' ,
TIMESTAMP'0000-01-01 00:00:00' ,
TIMESTAMP'2001-00-00 00:00:00' ,
TIMESTAMP'2001-00-01 00:00:00' ,
TIMESTAMP'2001-01-00 00:00:00' ;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`TIMESTAMP'2001-01-01 00:00:00' ` datetime NOT NULL,
`TIMESTAMP'0000-01-01 00:00:00' ` datetime NOT NULL,
`TIMESTAMP'2001-00-00 00:00:00' ` datetime DEFAULT NULL,
`TIMESTAMP'2001-00-01 00:00:00' ` datetime DEFAULT NULL,
`TIMESTAMP'2001-01-00 00:00:00' ` datetime DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
DROP TABLE t1;
#
# MDEV-5975 Prepared statements with DATE literals do not honor NO_ZERO_IN_DATE
#
SET sql_mode=DEFAULT;
PREPARE stmt FROM "SELECT (SELECT DATE'2001-00-00') AS c" ;
EXECUTE stmt;
c
2001 -00 -00
SET sql_mode='no_zero_in_date' ;
EXECUTE stmt;
c
NULL
Warnings:
Warning 1292 Incorrect datetime value: '2001-00-00'
DEALLOCATE PREPARE stmt;
SET sql_mode=DEFAULT;
PREPARE stmt FROM "SELECT (SELECT TIMESTAMP'2001-00-00 10:20:30') AS c" ;
EXECUTE stmt;
c
2001 -00 -00 10 :20 :30
SET sql_mode='no_zero_in_date' ;
EXECUTE stmt;
c
NULL
Warnings:
Warning 1292 Incorrect datetime value: '2001-00-00 10:20:30'
DEALLOCATE PREPARE stmt;
SET sql_mode=DEFAULT;
Messung V0.5 in Prozent C=69 H=100 G=85
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-10-08)
¤
*© Formatika GbR, Deutschland