1
by brian
clean slate |
1 |
--disable_warnings
|
2 |
drop table if exists t1, test; |
|
3 |
--enable_warnings
|
|
4 |
||
5 |
||
6 |
#
|
|
7 |
# time functions |
|
8 |
#
|
|
9 |
select extract(DAY_MICROSECOND FROM "1999-01-02 10:11:12.000123"); |
|
10 |
select extract(HOUR_MICROSECOND FROM "1999-01-02 10:11:12.000123"); |
|
11 |
select extract(MINUTE_MICROSECOND FROM "1999-01-02 10:11:12.000123"); |
|
12 |
select extract(SECOND_MICROSECOND FROM "1999-01-02 10:11:12.000123"); |
|
13 |
select extract(MICROSECOND FROM "1999-01-02 10:11:12.000123"); |
|
14 |
select date_format("1997-12-31 23:59:59.000002", "%f"); |
|
15 |
||
16 |
select date_add("1997-12-31 23:59:59.000002",INTERVAL "10000 99:99:99.999999" DAY_MICROSECOND); |
|
17 |
select date_add("1997-12-31 23:59:59.000002",INTERVAL "10000:99:99.999999" HOUR_MICROSECOND); |
|
18 |
select date_add("1997-12-31 23:59:59.000002",INTERVAL "10000:99.999999" MINUTE_MICROSECOND); |
|
19 |
select date_add("1997-12-31 23:59:59.000002",INTERVAL "10000.999999" SECOND_MICROSECOND); |
|
20 |
select date_add("1997-12-31 23:59:59.000002",INTERVAL "999999" MICROSECOND); |
|
21 |
||
22 |
select date_sub("1998-01-01 00:00:00.000001",INTERVAL "1 1:1:1.000002" DAY_MICROSECOND); |
|
23 |
select date_sub("1998-01-01 00:00:00.000001",INTERVAL "1:1:1.000002" HOUR_MICROSECOND); |
|
24 |
select date_sub("1998-01-01 00:00:00.000001",INTERVAL "1:1.000002" MINUTE_MICROSECOND); |
|
25 |
select date_sub("1998-01-01 00:00:00.000001",INTERVAL "1.000002" SECOND_MICROSECOND); |
|
26 |
select date_sub("1998-01-01 00:00:00.000001",INTERVAL "000002" MICROSECOND); |
|
27 |
||
28 |
#Date functions |
|
29 |
select adddate("1997-12-31 23:59:59.000001", 10); |
|
30 |
select subdate("1997-12-31 23:59:59.000001", 10); |
|
31 |
||
32 |
select datediff("1997-12-31 23:59:59.000001","1997-12-30"); |
|
33 |
select datediff("1997-11-30 23:59:59.000001","1997-12-31"); |
|
34 |
||
35 |
# This will give a warning |
|
36 |
select datediff("1997-11-31 23:59:59.000001","1997-12-31"); |
|
37 |
select datediff("1997-11-30 23:59:59.000001",null); |
|
38 |
||
39 |
select makedate(03,1); |
|
40 |
select makedate('0003',1); |
|
41 |
select makedate(1997,1); |
|
42 |
select makedate(1997,0); |
|
43 |
select makedate(9999,365); |
|
44 |
select makedate(9999,366); |
|
45 |
select makedate(100,1); |
|
46 |
||
47 |
#Time functions |
|
48 |
||
49 |
select addtime("1997-12-31 23:59:59.999999", "1 1:1:1.000002"); |
|
50 |
select subtime("1997-12-31 23:59:59.000001", "1 1:1:1.000002"); |
|
51 |
select addtime("1997-12-31 23:59:59.999999", "1998-01-01 01:01:01.999999"); |
|
52 |
select subtime("1997-12-31 23:59:59.999999", "1998-01-01 01:01:01.999999"); |
|
53 |
select subtime("01:00:00.999999", "02:00:00.999998"); |
|
54 |
select subtime("02:01:01.999999", "01:01:01.999999"); |
|
55 |
||
56 |
# PS doesn't support fractional seconds |
|
57 |
--disable_ps_protocol
|
|
58 |
select timediff("1997-01-01 23:59:59.000001","1995-12-31 23:59:59.000002");
|
|
59 |
select timediff("1997-12-31 23:59:59.000001","1997-12-30 01:01:01.000002");
|
|
60 |
select timediff("1997-12-30 23:59:59.000001","1997-12-31 23:59:59.000002");
|
|
61 |
select timediff("1997-12-31 23:59:59.000001","23:59:59.000001");
|
|
62 |
select timediff("2000:01:01 00:00:00", "2000:01:01 00:00:00.000001");
|
|
63 |
select timediff("2005-01-11 15:48:49.999999", "2005-01-11 15:48:50");
|
|
64 |
--enable_ps_protocol
|
|
65 |
||
66 |
select maketime(10,11,12);
|
|
67 |
select maketime(25,11,12);
|
|
68 |
select maketime(-25,11,12);
|
|
69 |
||
70 |
# Extraction functions
|
|
71 |
||
72 |
# PS doesn't support fractional seconds |
|
73 |
--disable_ps_protocol
|
|
74 |
select timestamp("2001-12-01", "01:01:01.999999"); |
|
75 |
select timestamp("2001-13-01", "01:01:01.000001"); |
|
76 |
select timestamp("2001-12-01", "25:01:01"); |
|
77 |
select timestamp("2001-12-01 01:01:01.000100"); |
|
78 |
select timestamp("2001-12-01"); |
|
79 |
select day("1997-12-31 23:59:59.000001"); |
|
80 |
select date("1997-12-31 23:59:59.000001"); |
|
81 |
select date("1997-13-31 23:59:59.000001"); |
|
82 |
select time("1997-12-31 23:59:59.000001"); |
|
83 |
select time("1997-12-31 25:59:59.000001"); |
|
84 |
select microsecond("1997-12-31 23:59:59.000001"); |
|
85 |
--enable_ps_protocol
|
|
86 |
||
87 |
create table t1 |
|
88 |
select makedate(1997,1) as f1, |
|
89 |
addtime(cast("1997-12-31 23:59:59.000001" as datetime), "1 1:1:1.000002") as f2, |
|
90 |
addtime(cast("23:59:59.999999" as time) , "1 1:1:1.000002") as f3, |
|
91 |
timediff("1997-12-31 23:59:59.000001","1997-12-30 01:01:01.000002") as f4, |
|
92 |
timediff("1997-12-30 23:59:59.000001","1997-12-31 23:59:59.000002") as f5, |
|
93 |
maketime(10,11,12) as f6, |
|
94 |
timestamp(cast("2001-12-01" as date), "01:01:01") as f7, |
|
95 |
date("1997-12-31 23:59:59.000001") as f8, |
|
96 |
time("1997-12-31 23:59:59.000001") as f9; |
|
97 |
describe t1; |
|
98 |
# PS doesn't support fractional seconds |
|
99 |
--disable_ps_protocol
|
|
100 |
select * from t1;
|
|
101 |
--enable_ps_protocol
|
|
102 |
||
103 |
create table test(t1 datetime, t2 time, t3 time, t4 datetime);
|
|
104 |
insert into test values
|
|
105 |
('2001-01-01 01:01:01', '01:01:01', null, '2001-02-01 01:01:01'), |
|
106 |
('2001-01-01 01:01:01', '-01:01:01', '-23:59:59', "1997-12-31 23:59:59.000001"), |
|
107 |
('1997-12-31 23:59:59.000001', '-23:59:59', '-01:01:01', '2001-01-01 01:01:01'), |
|
108 |
('2001-01-01 01:01:01', '01:01:01', '-1 01:01:01', null), |
|
109 |
('2001-01-01 01:01:01', '-01:01:01', '1 01:01:01', '2001-01-01 01:01:01'), |
|
110 |
('2001-01-01 01:01:01', null, '-1 01:01:01', null), |
|
111 |
(null, null, null, null),
|
|
112 |
('2001-01-01 01:01:01', '01:01:01', '1 01:01:01', '2001-01-01 01:01:01'); |
|
113 |
||
114 |
SELECT ADDTIME(t1,t2) As ttt, ADDTIME(t2, t3) As qqq from test;
|
|
115 |
# PS doesn't support fractional seconds |
|
116 |
--disable_ps_protocol
|
|
117 |
SELECT TIMEDIFF(t1, t4) As ttt, TIMEDIFF(t2, t3) As qqq, |
|
118 |
TIMEDIFF(t3, t2) As eee, TIMEDIFF(t2, t4) As rrr from test; |
|
119 |
--enable_ps_protocol
|
|
120 |
||
121 |
drop table t1, test; |
|
122 |
||
123 |
select addtime("-01:01:01.01", "-23:59:59.1") as a; |
|
124 |
select microsecond("1997-12-31 23:59:59.01") as a; |
|
125 |
select microsecond(19971231235959.01) as a; |
|
126 |
select date_add("1997-12-31",INTERVAL "10.09" SECOND_MICROSECOND) as a; |
|
127 |
# PS doesn't support fractional seconds |
|
128 |
--disable_ps_protocol
|
|
129 |
select str_to_date("2003-01-02 10:11:12.0012", "%Y-%m-%d %H:%i:%S.%f"); |
|
130 |
--enable_ps_protocol
|
|
131 |
||
132 |
# End of 4.1 tests |