105 lines
2.7 KiB
PHP
105 lines
2.7 KiB
PHP
let $table_name=tbl_date;
|
|
let $colname=d;
|
|
eval CREATE TABLE tbl_date($colname DATE);
|
|
INSERT INTO tbl_date VALUES ('0000-01-01'), ('2038-01-19'), ('9999-12-31');
|
|
ANALYZE TABLE tbl_date;
|
|
SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=ALLOW_INVALID_DATES;
|
|
|
|
--echo
|
|
--echo 1. String literals
|
|
--echo
|
|
--echo
|
|
|
|
--echo Semi supported
|
|
let $constant='0000-01-01';
|
|
--source include/const_folding_cmp_ops.inc
|
|
let $constant='2038-01-19';
|
|
--source include/const_folding_cmp_ops.inc
|
|
let $constant='1000-01-01';
|
|
--source include/const_folding_cmp_ops.inc
|
|
let $constant='9999-12-31';
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
--echo Compare to a full datetime value instead of a date
|
|
let $constant='2038-01-19 12:45:00';
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
|
|
--echo Zero date?
|
|
let $constant='0000-00-00';
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
--echo Zero in date
|
|
let $constant='2018-00-03';
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
--echo Strangely, this does not give an error nor warning, and does
|
|
--echo comparison using internal datetime comparison (pre-folding), so
|
|
--echo we do the same.
|
|
let $constant='2018-02-31';
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
--echo
|
|
--echo 2. TIMESTAMP literals compared with DATE field
|
|
--echo
|
|
let $constant=TIMESTAMP'2038-01-19 00:00:00';
|
|
--source include/const_folding_cmp_ops.inc
|
|
let $constant=TIMESTAMP'2038-01-19 00:00:01';
|
|
--source include/const_folding_cmp_ops.inc
|
|
let $constant=TIMESTAMP'2038-01-19 00:00:00.000001';
|
|
|
|
--echo
|
|
--echo 3. Integer literals
|
|
--echo
|
|
|
|
--echo in range
|
|
let $constant=20380119;
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
--echo incorrect value; removes time part
|
|
let $constant=20380119124500;
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
--echo out of range; interpreted as a value smaller than TIMESTAMP min
|
|
let $constant=2018;
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
let $constant=0;
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
--echo
|
|
--echo 3. Decimal literals
|
|
--echo
|
|
let $constant=20380119.00;
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
--echo incorrect value; removes time part
|
|
let $constant=20380119061405.00;
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
--echo out of range - compare using double
|
|
let $constant=2018.55;
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
let $constant=0.00;
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
--echo
|
|
--echo 3. Real literals: rounded up to whole seconds
|
|
--echo
|
|
--echo in range
|
|
let $constant=20380119E00;
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
--echo incorrect value; removes time part
|
|
let $constant=20380119194500E00;
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
--echo out of range compare using double
|
|
let $constant=2018.55E00;
|
|
|
|
let $constant=0.00E00;
|
|
--source include/const_folding_cmp_ops.inc
|
|
|
|
eval DROP TABLE $table_name;
|
|
SET SESSION sql_mode = DEFAULT; |