2
# test of problem with date fields
5
drop table if exists t1,t2;
8
create table t1 (a char(16) primary key, b date, c datetime);
9
insert into t1 SET a='test 2000-01-01', b='2000-01-01', c='2000-01-01';
10
select * from t1 where c = '2000-01-01';
11
select * from t1 where b = '2000-01-01';
15
# problem with date conversions
18
CREATE TABLE t1 (name char(6),cdate date, primary key (name,cdate));
19
INSERT INTO t1 VALUES ('name1','1998-01-01');
20
INSERT INTO t1 VALUES ('name2','1998-01-01');
21
INSERT INTO t1 VALUES ('name1','1998-01-02');
22
INSERT INTO t1 VALUES ('name2','1998-01-02');
23
CREATE TABLE t2 (cdate date, note char(6), primary key (cdate,note));
24
INSERT INTO t2 VALUES ('1998-01-01','note01');
25
INSERT INTO t2 VALUES ('1998-01-02','note02');
26
select name,t1.cdate,note from t1,t2 where t1.cdate=t2.cdate and t1.cdate='1998-01-01';
33
CREATE TABLE t1 ( datum DATE primary key);
34
INSERT INTO t1 VALUES ( "2000-1-1" );
35
INSERT INTO t1 VALUES ( "2000-1-2" );
36
INSERT INTO t1 VALUES ( "2000-1-3" );
37
INSERT INTO t1 VALUES ( "2000-1-4" );
38
INSERT INTO t1 VALUES ( "2000-1-5" );
39
SELECT * FROM t1 WHERE datum BETWEEN cast("2000-1-2" as date) AND cast("2000-1-4" as date);
40
SELECT * FROM t1 WHERE datum BETWEEN cast("2000-1-2" as date) AND datum - INTERVAL 100 DAY;
44
# test of max(date) and having
51
primary key (user_id, summa, rdate)
53
INSERT INTO t1 VALUES ('aaa',100,'1998-01-01');
54
INSERT INTO t1 VALUES ('aaa',200,'1998-01-03');
55
INSERT INTO t1 VALUES ('bbb',50,'1998-01-02');
56
INSERT INTO t1 VALUES ('bbb',200,'1998-01-04');
57
select max(rdate) as s from t1 where rdate < '1998-01-03' having s> "1998-01-01";
58
select max(rdate) as s from t1 having s="1998-01-04";
59
select max(rdate+0) as s from t1 having s="19980104";
63
# Test of date and not null
66
create table t1 (date date primary key);
67
insert into t1 values ("2000-08-10"),("2000-08-11");
68
select date_add(date,INTERVAL 1 DAY),date_add(date,INTERVAL 1 SECOND) from t1;
72
# Test problem with DATE_FORMAT
75
CREATE TABLE t1(AFIELD INT primary key);
76
INSERT INTO t1 VALUES(1);
77
CREATE TABLE t2(GMT VARCHAR(32) primary key);
78
INSERT INTO t2 VALUES('GMT-0800');
79
SELECT DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT)) FROM t1, t2 GROUP BY t1.AFIELD;
80
INSERT INTO t1 VALUES(2);
81
SELECT DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT)), DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT)) FROM t1,t2 GROUP BY t1.AFIELD;
85
# Bug 4937: different date -> string conversion when using SELECT ... UNION
86
# and INSERT ... SELECT ... UNION
89
CREATE TABLE t1 (f1 DATE, pk int auto_increment primary key);
90
CREATE TABLE t2 (f2 VARCHAR(8), pk int auto_increment primary key);
91
CREATE TABLE t3 (f2 CHAR(8), pk int auto_increment primary key);
93
INSERT INTO t1 (f1) VALUES ('1978-11-26');
94
INSERT INTO t2 (f2) SELECT f1+0 FROM t1;
95
INSERT INTO t2 (f2) SELECT f1+0 FROM t1 UNION SELECT f1+0 FROM t1;
96
INSERT INTO t3 (f2) SELECT f1+0 FROM t1;
97
INSERT INTO t3 (f2) SELECT f1+0 FROM t1 UNION SELECT f1+0 FROM t1;
101
DROP TABLE t1, t2, t3;
104
# Bug#21677: Wrong result when comparing a DATE and a DATETIME in BETWEEN
106
create table t1(start_date date, end_date date, primary key (start_date, end_date));
107
insert into t1 values ('2000-01-01','2000-01-02');
108
select 1 from t1 where cast('2000-01-01 12:01:01' as datetime) between start_date and end_date;
113
# Bug #23093: Implicit conversion of 9912101 to date does not match
114
# cast(9912101 as date)
117
select year(@d), month(@d), day(@d), cast(@d as date);
119
select year(@d), month(@d), day(@d), cast(@d as date);
121
--error ER_INVALID_DATETIME_VALUE # Invalid datetime of 1311
122
select year(@d), month(@d), day(@d), cast(@d as date);
123
create table t1 (d date , dt datetime , ts timestamp, primary key (d));
124
insert into t1 values (9912101,9912101,9912101);
125
insert into t1 values (11111,11111,11111);
130
# Bug #31221: Optimizer incorrectly identifies impossible WHERE clause
133
CREATE TABLE t1 (a DATE, b int, PRIMARY KEY (a,b));
134
INSERT INTO t1 VALUES (DATE(NOW()), 1);
135
SELECT COUNT(*) FROM t1 WHERE a = NOW();
137
EXPLAIN SELECT COUNT(*) FROM t1 WHERE a = NOW();
138
INSERT INTO t1 VALUES (DATE(NOW()), 2);
139
SELECT COUNT(*) FROM t1 WHERE a = NOW();
141
EXPLAIN SELECT COUNT(*) FROM t1 WHERE a = NOW();
142
SELECT COUNT(*) FROM t1 WHERE a = NOW() AND b = 1;
144
EXPLAIN SELECT COUNT(*) FROM t1 WHERE a = NOW() AND b = 1;
145
# This bombs for some reason...commenting out for now.
147
# ALTER TABLE t1 DROP PRIMARY KEY;
148
#SELECT COUNT(*) FROM t1 WHERE a = NOW();
149
#EXPLAIN SELECT COUNT(*) FROM t1 WHERE a = NOW();
154
# Bug #31990: MINUTE() and SECOND() return bogus results when used on a DATE
157
CREATE TABLE t1 (f1 date primary key) SELECT curdate() AS f1;
158
SELECT hour(f1), minute(f1), second(f1) FROM t1;
161
--echo End of 5.0 tests