~drizzle-trunk/drizzle/development

813.1.17 by Jay Pipes
Fixes MICROSECOND() to use new Temporal system and throw appropriate errors on bad datetimes. Adds new microsecond.test case. Still to do: don't have microseconds thrown away by DATETIME type... :)
1
SELECT MICROSECOND(NULL);
2
MICROSECOND(NULL)
3
NULL
4
SELECT MICROSECOND();
5
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your Drizzle server version for the right syntax to use near ')' at line 1
6
SELECT MICROSECOND(1, 0);
7
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your Drizzle server version for the right syntax to use near ' 0)' at line 1
8
SELECT MICROSECOND("xxx");
9
ERROR HY000: Received an invalid datetime value 'xxx'.
10
SELECT MICROSECOND("0000-00-00");
11
ERROR HY000: Received an invalid datetime value '0000-00-00'.
12
SELECT MICROSECOND("0000-01-01");
13
ERROR HY000: Received an invalid datetime value '0000-01-01'.
14
SELECT MICROSECOND("0001-00-01");
15
ERROR HY000: Received an invalid datetime value '0001-00-01'.
16
SELECT MICROSECOND("0001-01-00");
17
ERROR HY000: Received an invalid datetime value '0001-01-00'.
18
SELECT MICROSECOND("2000-02-30");
19
ERROR HY000: Received an invalid datetime value '2000-02-30'.
20
SELECT MICROSECOND("1900-02-29");
21
ERROR HY000: Received an invalid datetime value '1900-02-29'.
22
SELECT MICROSECOND('1976-15-15');
23
ERROR HY000: Received an invalid datetime value '1976-15-15'.
24
SELECT MICROSECOND('23:59:70');
25
ERROR HY000: Received an invalid datetime value '23:59:70'.
26
SELECT MICROSECOND('23:70:59');
27
ERROR HY000: Received an invalid datetime value '23:70:59'.
28
SELECT MICROSECOND('26:00:00');
29
ERROR HY000: Received an invalid datetime value '26:00:00'.
30
SELECT MICROSECOND('26:00:00.9999999');
31
ERROR HY000: Received an invalid datetime value '26:00:00.9999999'.
32
SELECT MICROSECOND("2009-01-12");
33
MICROSECOND("2009-01-12")
34
0
35
SELECT MICROSECOND("70-12-31");
36
MICROSECOND("70-12-31")
37
0
38
SELECT MICROSECOND('07/31/2009');
39
MICROSECOND('07/31/2009')
40
0
41
SELECT MICROSECOND("2008-11-30 03:30:15");
42
MICROSECOND("2008-11-30 03:30:15")
43
0
44
SELECT MICROSECOND("2008-11-30T03:30:15");
45
MICROSECOND("2008-11-30T03:30:15")
46
0
47
SELECT MICROSECOND("2008-11-30T03:30:15.123456");
48
MICROSECOND("2008-11-30T03:30:15.123456")
49
123456
50
SELECT MICROSECOND("20081130033015");
51
MICROSECOND("20081130033015")
52
0
53
SELECT MICROSECOND("20081130033015.123456");
54
MICROSECOND("20081130033015.123456")
55
123456
813.1.19 by Jay Pipes
To remain in compatibility with MySQL, added ability to interpret
56
SELECT MICROSECOND("20081130033015.12345");
57
MICROSECOND("20081130033015.12345")
58
123450
59
SELECT MICROSECOND("20081130033015.1234");
60
MICROSECOND("20081130033015.1234")
61
123400
62
SELECT MICROSECOND("20081130033015.123");
63
MICROSECOND("20081130033015.123")
64
123000
65
SELECT MICROSECOND("20081130033015.12");
66
MICROSECOND("20081130033015.12")
67
120000
68
SELECT MICROSECOND("20081130033015.1");
69
MICROSECOND("20081130033015.1")
70
100000
813.1.17 by Jay Pipes
Fixes MICROSECOND() to use new Temporal system and throw appropriate errors on bad datetimes. Adds new microsecond.test case. Still to do: don't have microseconds thrown away by DATETIME type... :)
71
SELECT MICROSECOND(20081130033015);
72
MICROSECOND(20081130033015)
73
0
813.1.19 by Jay Pipes
To remain in compatibility with MySQL, added ability to interpret
74
SELECT MICROSECOND(20081130033015.123456);
75
MICROSECOND(20081130033015.123456)
76
123456
77
SELECT MICROSECOND(20081130033015.12345);
78
MICROSECOND(20081130033015.12345)
79
123450
80
SELECT MICROSECOND(20081130033015.1234);
81
MICROSECOND(20081130033015.1234)
82
123400
83
SELECT MICROSECOND(20081130033015.123);
84
MICROSECOND(20081130033015.123)
85
123000
86
SELECT MICROSECOND(20081130033015.12);
87
MICROSECOND(20081130033015.12)
88
120000
89
SELECT MICROSECOND(20081130033015.1);
90
MICROSECOND(20081130033015.1)
91
100000
813.1.17 by Jay Pipes
Fixes MICROSECOND() to use new Temporal system and throw appropriate errors on bad datetimes. Adds new microsecond.test case. Still to do: don't have microseconds thrown away by DATETIME type... :)
92
SELECT MICROSECOND(231115);
93
MICROSECOND(231115)
94
0
95
SELECT MICROSECOND("231115");
96
MICROSECOND("231115")
97
0
98
SELECT MICROSECOND("23:59:59");
99
MICROSECOND("23:59:59")
100
0
101
SELECT MICROSECOND("23:59:59.123456");
102
MICROSECOND("23:59:59.123456")
103
123456
104
USE test;
105
DROP TABLE IF EXISTS t1;
106
CREATE TABLE t1 (
107
int_fld INT NOT NULL
108
, date_fld DATE NOT NULL
109
, datetime_fld DATETIME NOT NULL
110
, timestamp_fld TIMESTAMP NOT NULL
111
, char_fld CHAR(22) NOT NULL
112
, varchar_fld VARCHAR(22) NOT NULL
113
, text_fld TEXT NOT NULL
114
, blob_fld BLOB NOT NULL
115
);
116
INSERT INTO t1 VALUES (
117
20071130
118
, "2007-11-30"
119
, "2007-11-30 16:30:19"
120
, "2007-11-30T16:30:19"
121
, "2007-11-30 16:30:19"
122
, "2007-11-30 16:30:19"
123
, "2007-11-30T16:30:19"
124
, "2007-11-30T16:30:19"
125
);
126
SELECT MICROSECOND(int_fld) FROM t1;
127
MICROSECOND(int_fld)
128
0
129
SELECT MICROSECOND(date_fld) FROM t1;
130
MICROSECOND(date_fld)
131
0
132
SELECT MICROSECOND(datetime_fld) FROM t1;
133
MICROSECOND(datetime_fld)
134
0
135
SELECT MICROSECOND(timestamp_fld) FROM t1;
136
MICROSECOND(timestamp_fld)
137
0
138
SELECT MICROSECOND(char_fld) FROM t1;
139
MICROSECOND(char_fld)
140
0
141
SELECT MICROSECOND(varchar_fld) FROM t1;
142
MICROSECOND(varchar_fld)
143
0
144
SELECT MICROSECOND(text_fld) FROM t1;
145
MICROSECOND(text_fld)
146
0
147
SELECT MICROSECOND(blob_fld) FROM t1;
148
MICROSECOND(blob_fld)
149
0
150
DROP TABLE t1;