1
by brian
clean slate |
1 |
drop table if exists t1, test;
|
2 |
select extract(DAY_MICROSECOND FROM "1999-01-02 10:11:12.000123");
|
|
3 |
extract(DAY_MICROSECOND FROM "1999-01-02 10:11:12.000123")
|
|
4 |
2101112000123
|
|
5 |
select extract(HOUR_MICROSECOND FROM "1999-01-02 10:11:12.000123");
|
|
6 |
extract(HOUR_MICROSECOND FROM "1999-01-02 10:11:12.000123")
|
|
7 |
101112000123
|
|
8 |
select extract(MINUTE_MICROSECOND FROM "1999-01-02 10:11:12.000123");
|
|
9 |
extract(MINUTE_MICROSECOND FROM "1999-01-02 10:11:12.000123")
|
|
10 |
1112000123
|
|
11 |
select extract(SECOND_MICROSECOND FROM "1999-01-02 10:11:12.000123");
|
|
12 |
extract(SECOND_MICROSECOND FROM "1999-01-02 10:11:12.000123")
|
|
13 |
12000123
|
|
14 |
select extract(MICROSECOND FROM "1999-01-02 10:11:12.000123");
|
|
15 |
extract(MICROSECOND FROM "1999-01-02 10:11:12.000123")
|
|
16 |
123
|
|
17 |
select date_format("1997-12-31 23:59:59.000002", "%f");
|
|
18 |
date_format("1997-12-31 23:59:59.000002", "%f")
|
|
19 |
000002
|
|
20 |
select date_add("1997-12-31 23:59:59.000002",INTERVAL "10000 99:99:99.999999" DAY_MICROSECOND);
|
|
21 |
date_add("1997-12-31 23:59:59.000002",INTERVAL "10000 99:99:99.999999" DAY_MICROSECOND)
|
|
22 |
2025-05-23 04:40:39.000001
|
|
23 |
select date_add("1997-12-31 23:59:59.000002",INTERVAL "10000:99:99.999999" HOUR_MICROSECOND);
|
|
24 |
date_add("1997-12-31 23:59:59.000002",INTERVAL "10000:99:99.999999" HOUR_MICROSECOND)
|
|
25 |
1999-02-21 17:40:39.000001
|
|
26 |
select date_add("1997-12-31 23:59:59.000002",INTERVAL "10000:99.999999" MINUTE_MICROSECOND);
|
|
27 |
date_add("1997-12-31 23:59:59.000002",INTERVAL "10000:99.999999" MINUTE_MICROSECOND)
|
|
28 |
1998-01-07 22:41:39.000001
|
|
29 |
select date_add("1997-12-31 23:59:59.000002",INTERVAL "10000.999999" SECOND_MICROSECOND);
|
|
30 |
date_add("1997-12-31 23:59:59.000002",INTERVAL "10000.999999" SECOND_MICROSECOND)
|
|
31 |
1998-01-01 02:46:40.000001
|
|
32 |
select date_add("1997-12-31 23:59:59.000002",INTERVAL "999999" MICROSECOND);
|
|
33 |
date_add("1997-12-31 23:59:59.000002",INTERVAL "999999" MICROSECOND)
|
|
34 |
1998-01-01 00:00:00.000001
|
|
35 |
select date_sub("1998-01-01 00:00:00.000001",INTERVAL "1 1:1:1.000002" DAY_MICROSECOND);
|
|
36 |
date_sub("1998-01-01 00:00:00.000001",INTERVAL "1 1:1:1.000002" DAY_MICROSECOND)
|
|
37 |
1997-12-30 22:58:58.999999
|
|
38 |
select date_sub("1998-01-01 00:00:00.000001",INTERVAL "1:1:1.000002" HOUR_MICROSECOND);
|
|
39 |
date_sub("1998-01-01 00:00:00.000001",INTERVAL "1:1:1.000002" HOUR_MICROSECOND)
|
|
40 |
1997-12-31 22:58:58.999999
|
|
41 |
select date_sub("1998-01-01 00:00:00.000001",INTERVAL "1:1.000002" MINUTE_MICROSECOND);
|
|
42 |
date_sub("1998-01-01 00:00:00.000001",INTERVAL "1:1.000002" MINUTE_MICROSECOND)
|
|
43 |
1997-12-31 23:58:58.999999
|
|
44 |
select date_sub("1998-01-01 00:00:00.000001",INTERVAL "1.000002" SECOND_MICROSECOND);
|
|
45 |
date_sub("1998-01-01 00:00:00.000001",INTERVAL "1.000002" SECOND_MICROSECOND)
|
|
46 |
1997-12-31 23:59:58.999999
|
|
47 |
select date_sub("1998-01-01 00:00:00.000001",INTERVAL "000002" MICROSECOND);
|
|
48 |
date_sub("1998-01-01 00:00:00.000001",INTERVAL "000002" MICROSECOND)
|
|
49 |
1997-12-31 23:59:59.999999
|
|
50 |
select adddate("1997-12-31 23:59:59.000001", 10);
|
|
51 |
adddate("1997-12-31 23:59:59.000001", 10)
|
|
52 |
1998-01-10 23:59:59.000001
|
|
53 |
select subdate("1997-12-31 23:59:59.000001", 10);
|
|
54 |
subdate("1997-12-31 23:59:59.000001", 10)
|
|
55 |
1997-12-21 23:59:59.000001
|
|
56 |
select datediff("1997-12-31 23:59:59.000001","1997-12-30");
|
|
57 |
datediff("1997-12-31 23:59:59.000001","1997-12-30")
|
|
58 |
1
|
|
59 |
select datediff("1997-11-30 23:59:59.000001","1997-12-31");
|
|
60 |
datediff("1997-11-30 23:59:59.000001","1997-12-31")
|
|
61 |
-31
|
|
62 |
SET @@SQL_MODE="ALLOW_INVALID_DATES";
|
|
63 |
select datediff("1997-11-31 23:59:59.000001","1997-12-31");
|
|
64 |
datediff("1997-11-31 23:59:59.000001","1997-12-31")
|
|
65 |
-30
|
|
66 |
SET @@SQL_MODE="";
|
|
67 |
select datediff("1997-11-31 23:59:59.000001","1997-12-31");
|
|
68 |
datediff("1997-11-31 23:59:59.000001","1997-12-31")
|
|
69 |
NULL
|
|
70 |
Warnings:
|
|
71 |
Warning 1292 Incorrect datetime value: '1997-11-31 23:59:59.000001'
|
|
72 |
select datediff("1997-11-30 23:59:59.000001",null);
|
|
73 |
datediff("1997-11-30 23:59:59.000001",null)
|
|
74 |
NULL
|
|
75 |
select weekofyear("1997-11-30 23:59:59.000001");
|
|
76 |
weekofyear("1997-11-30 23:59:59.000001")
|
|
77 |
48
|
|
78 |
select makedate(03,1);
|
|
79 |
makedate(03,1)
|
|
80 |
2003-01-01
|
|
81 |
select makedate('0003',1);
|
|
82 |
makedate('0003',1)
|
|
83 |
2003-01-01
|
|
84 |
select makedate(1997,1);
|
|
85 |
makedate(1997,1)
|
|
86 |
1997-01-01
|
|
87 |
select makedate(1997,0);
|
|
88 |
makedate(1997,0)
|
|
89 |
NULL
|
|
90 |
select makedate(9999,365);
|
|
91 |
makedate(9999,365)
|
|
92 |
9999-12-31
|
|
93 |
select makedate(9999,366);
|
|
94 |
makedate(9999,366)
|
|
95 |
NULL
|
|
96 |
select makedate(100,1);
|
|
97 |
makedate(100,1)
|
|
98 |
0100-01-01
|
|
99 |
select addtime("1997-12-31 23:59:59.999999", "1 1:1:1.000002");
|
|
100 |
addtime("1997-12-31 23:59:59.999999", "1 1:1:1.000002")
|
|
101 |
1998-01-02 01:01:01.000001
|
|
102 |
select subtime("1997-12-31 23:59:59.000001", "1 1:1:1.000002");
|
|
103 |
subtime("1997-12-31 23:59:59.000001", "1 1:1:1.000002")
|
|
104 |
1997-12-30 22:58:57.999999
|
|
105 |
select addtime("1997-12-31 23:59:59.999999", "1998-01-01 01:01:01.999999");
|
|
106 |
addtime("1997-12-31 23:59:59.999999", "1998-01-01 01:01:01.999999")
|
|
107 |
NULL
|
|
108 |
select subtime("1997-12-31 23:59:59.999999", "1998-01-01 01:01:01.999999");
|
|
109 |
subtime("1997-12-31 23:59:59.999999", "1998-01-01 01:01:01.999999")
|
|
110 |
NULL
|
|
111 |
select subtime("01:00:00.999999", "02:00:00.999998");
|
|
112 |
subtime("01:00:00.999999", "02:00:00.999998")
|
|
113 |
-00:59:59.999999
|
|
114 |
select subtime("02:01:01.999999", "01:01:01.999999");
|
|
115 |
subtime("02:01:01.999999", "01:01:01.999999")
|
|
116 |
01:00:00.000000
|
|
117 |
select timediff("1997-01-01 23:59:59.000001","1995-12-31 23:59:59.000002");
|
|
118 |
timediff("1997-01-01 23:59:59.000001","1995-12-31 23:59:59.000002")
|
|
119 |
838:59:59
|
|
120 |
Warnings:
|
|
121 |
Warning 1292 Truncated incorrect time value: '8807:59:59.999999'
|
|
122 |
select timediff("1997-12-31 23:59:59.000001","1997-12-30 01:01:01.000002");
|
|
123 |
timediff("1997-12-31 23:59:59.000001","1997-12-30 01:01:01.000002")
|
|
124 |
46:58:57.999999
|
|
125 |
select timediff("1997-12-30 23:59:59.000001","1997-12-31 23:59:59.000002");
|
|
126 |
timediff("1997-12-30 23:59:59.000001","1997-12-31 23:59:59.000002")
|
|
127 |
-24:00:00.000001
|
|
128 |
select timediff("1997-12-31 23:59:59.000001","23:59:59.000001");
|
|
129 |
timediff("1997-12-31 23:59:59.000001","23:59:59.000001")
|
|
130 |
NULL
|
|
131 |
select timediff("2000:01:01 00:00:00", "2000:01:01 00:00:00.000001");
|
|
132 |
timediff("2000:01:01 00:00:00", "2000:01:01 00:00:00.000001")
|
|
133 |
-00:00:00.000001
|
|
134 |
select timediff("2005-01-11 15:48:49.999999", "2005-01-11 15:48:50");
|
|
135 |
timediff("2005-01-11 15:48:49.999999", "2005-01-11 15:48:50")
|
|
136 |
-00:00:00.000001
|
|
137 |
select maketime(10,11,12);
|
|
138 |
maketime(10,11,12)
|
|
139 |
10:11:12
|
|
140 |
select maketime(25,11,12);
|
|
141 |
maketime(25,11,12)
|
|
142 |
25:11:12
|
|
143 |
select maketime(-25,11,12);
|
|
144 |
maketime(-25,11,12)
|
|
145 |
-25:11:12
|
|
146 |
select timestamp("2001-12-01", "01:01:01.999999");
|
|
147 |
timestamp("2001-12-01", "01:01:01.999999")
|
|
148 |
2001-12-01 01:01:01.999999
|
|
149 |
select timestamp("2001-13-01", "01:01:01.000001");
|
|
150 |
timestamp("2001-13-01", "01:01:01.000001")
|
|
151 |
NULL
|
|
152 |
Warnings:
|
|
153 |
Warning 1292 Incorrect datetime value: '2001-13-01'
|
|
154 |
select timestamp("2001-12-01", "25:01:01");
|
|
155 |
timestamp("2001-12-01", "25:01:01")
|
|
156 |
2001-12-02 01:01:01
|
|
157 |
select timestamp("2001-12-01 01:01:01.000100");
|
|
158 |
timestamp("2001-12-01 01:01:01.000100")
|
|
159 |
2001-12-01 01:01:01.000100
|
|
160 |
select timestamp("2001-12-01");
|
|
161 |
timestamp("2001-12-01")
|
|
162 |
2001-12-01 00:00:00
|
|
163 |
select day("1997-12-31 23:59:59.000001");
|
|
164 |
day("1997-12-31 23:59:59.000001")
|
|
165 |
31
|
|
166 |
select date("1997-12-31 23:59:59.000001");
|
|
167 |
date("1997-12-31 23:59:59.000001")
|
|
168 |
1997-12-31
|
|
169 |
select date("1997-13-31 23:59:59.000001");
|
|
170 |
date("1997-13-31 23:59:59.000001")
|
|
171 |
NULL
|
|
172 |
Warnings:
|
|
173 |
Warning 1292 Incorrect datetime value: '1997-13-31 23:59:59.000001'
|
|
174 |
select time("1997-12-31 23:59:59.000001");
|
|
175 |
time("1997-12-31 23:59:59.000001")
|
|
176 |
23:59:59.000001
|
|
177 |
select time("1997-12-31 25:59:59.000001");
|
|
178 |
time("1997-12-31 25:59:59.000001")
|
|
179 |
NULL
|
|
180 |
Warnings:
|
|
181 |
Warning 1292 Truncated incorrect time value: '1997-12-31 25:59:59.000001'
|
|
182 |
select microsecond("1997-12-31 23:59:59.000001");
|
|
183 |
microsecond("1997-12-31 23:59:59.000001")
|
|
184 |
1
|
|
185 |
create table t1
|
|
186 |
select makedate(1997,1) as f1,
|
|
187 |
addtime(cast("1997-12-31 23:59:59.000001" as datetime), "1 1:1:1.000002") as f2,
|
|
188 |
addtime(cast("23:59:59.999999" as time) , "1 1:1:1.000002") as f3,
|
|
189 |
timediff("1997-12-31 23:59:59.000001","1997-12-30 01:01:01.000002") as f4,
|
|
190 |
timediff("1997-12-30 23:59:59.000001","1997-12-31 23:59:59.000002") as f5,
|
|
191 |
maketime(10,11,12) as f6,
|
|
192 |
timestamp(cast("2001-12-01" as date), "01:01:01") as f7,
|
|
193 |
date("1997-12-31 23:59:59.000001") as f8,
|
|
194 |
time("1997-12-31 23:59:59.000001") as f9;
|
|
195 |
describe t1;
|
|
196 |
Field Type Null Key Default Extra
|
|
197 |
f1 date NO 0000-00-00
|
|
198 |
f2 datetime YES NULL
|
|
199 |
f3 time YES NULL
|
|
200 |
f4 time YES NULL
|
|
201 |
f5 time YES NULL
|
|
202 |
f6 time YES NULL
|
|
203 |
f7 datetime YES NULL
|
|
204 |
f8 date YES NULL
|
|
205 |
f9 time YES NULL
|
|
206 |
select * from t1;
|
|
207 |
f1 f2 f3 f4 f5 f6 f7 f8 f9
|
|
208 |
1997-01-01 1998-01-02 01:01:00 49:01:01 46:58:57 -24:00:00 10:11:12 2001-12-01 01:01:01 1997-12-31 23:59:59
|
|
209 |
create table test(t1 datetime, t2 time, t3 time, t4 datetime);
|
|
210 |
insert into test values
|
|
211 |
('2001-01-01 01:01:01', '01:01:01', null, '2001-02-01 01:01:01'),
|
|
212 |
('2001-01-01 01:01:01', '-01:01:01', '-23:59:59', "1997-12-31 23:59:59.000001"),
|
|
213 |
('1997-12-31 23:59:59.000001', '-23:59:59', '-01:01:01', '2001-01-01 01:01:01'),
|
|
214 |
('2001-01-01 01:01:01', '01:01:01', '-1 01:01:01', null),
|
|
215 |
('2001-01-01 01:01:01', '-01:01:01', '1 01:01:01', '2001-01-01 01:01:01'),
|
|
216 |
('2001-01-01 01:01:01', null, '-1 01:01:01', null),
|
|
217 |
(null, null, null, null),
|
|
218 |
('2001-01-01 01:01:01', '01:01:01', '1 01:01:01', '2001-01-01 01:01:01');
|
|
219 |
SELECT ADDTIME(t1,t2) As ttt, ADDTIME(t2, t3) As qqq from test;
|
|
220 |
ttt qqq
|
|
221 |
2001-01-01 02:02:02 NULL
|
|
222 |
2001-01-01 00:00:00 -25:01:00
|
|
223 |
1997-12-31 00:00:00 -25:01:00
|
|
224 |
2001-01-01 02:02:02 -24:00:00
|
|
225 |
2001-01-01 00:00:00 24:00:00
|
|
226 |
NULL NULL
|
|
227 |
NULL NULL
|
|
228 |
2001-01-01 02:02:02 26:02:02
|
|
229 |
SELECT TIMEDIFF(t1, t4) As ttt, TIMEDIFF(t2, t3) As qqq,
|
|
230 |
TIMEDIFF(t3, t2) As eee, TIMEDIFF(t2, t4) As rrr from test;
|
|
231 |
ttt qqq eee rrr
|
|
232 |
-744:00:00 NULL NULL NULL
|
|
233 |
838:59:59 22:58:58 -22:58:58 NULL
|
|
234 |
-838:59:59 -22:58:58 22:58:58 NULL
|
|
235 |
NULL 26:02:02 -26:02:02 NULL
|
|
236 |
00:00:00 -26:02:02 26:02:02 NULL
|
|
237 |
NULL NULL NULL NULL
|
|
238 |
NULL NULL NULL NULL
|
|
239 |
00:00:00 -24:00:00 24:00:00 NULL
|
|
240 |
Warnings:
|
|
241 |
Warning 1292 Truncated incorrect time value: '26305:01:02'
|
|
242 |
Warning 1292 Truncated incorrect time value: '-26305:01:02'
|
|
243 |
drop table t1, test;
|
|
244 |
select addtime("-01:01:01.01", "-23:59:59.1") as a;
|
|
245 |
a
|
|
246 |
-25:01:00.110000
|
|
247 |
select microsecond("1997-12-31 23:59:59.01") as a;
|
|
248 |
a
|
|
249 |
10000
|
|
250 |
select microsecond(19971231235959.01) as a;
|
|
251 |
a
|
|
252 |
10000
|
|
253 |
select date_add("1997-12-31",INTERVAL "10.09" SECOND_MICROSECOND) as a;
|
|
254 |
a
|
|
255 |
1997-12-31 00:00:10.090000
|
|
256 |
select str_to_date("2003-01-02 10:11:12.0012", "%Y-%m-%d %H:%i:%S.%f");
|
|
257 |
str_to_date("2003-01-02 10:11:12.0012", "%Y-%m-%d %H:%i:%S.%f")
|
|
258 |
2003-01-02 10:11:12.001200
|