~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/dayofyear.test

  • Committer: Monty Taylor
  • Date: 2009-01-30 04:45:55 UTC
  • mfrom: (779.4.10 devel)
  • mto: (779.7.3 devel)
  • mto: This revision was merged to the branch mainline in revision 823.
  • Revision ID: mordred@inaugust.com-20090130044555-ntb3509c8o6e3sb5
MergedĀ fromĀ me.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# Tests for the DAYOFYEAR() function
 
3
#
 
4
# The Drizzle DAYOFYEAR() function differs from the MySQL DAYOFYEAR()
 
5
# function in these ways:
 
6
#
 
7
#  * Does not accept invalid parameters.  This results in an error
 
8
#    in Drizzle.
 
9
#
 
10
 
 
11
# DAYOFYEAR() on a NULL should produce
 
12
# a NULL.
 
13
SELECT DAYOFYEAR(NULL);
 
14
 
 
15
 
16
# Test improper argument list 
 
17
#
 
18
# 1 arg is required.
 
19
--error 1582 # Wrong parameter count...
 
20
SELECT DAYOFYEAR();
 
21
--error 1582 # Wrong parameter count...
 
22
SELECT DAYOFYEAR(1, 0);
 
23
 
 
24
 
25
# Test invalid dates passed to DAYOFYEAR
 
26
# produce an error, not a NULL or anything
 
27
# else...
 
28
#
 
29
--error 1686
 
30
SELECT DAYOFYEAR("xxx");
 
31
 
 
32
# Indy, bad dates!
 
33
--error 1686
 
34
SELECT DAYOFYEAR("0000-00-00"); # No 0000-00-00 dates!...
 
35
--error 1686
 
36
SELECT DAYOFYEAR("0000-01-01"); # No zero year parts
 
37
--error 1686
 
38
SELECT DAYOFYEAR("0001-00-01"); # No zero month parts
 
39
--error 1686
 
40
SELECT DAYOFYEAR("0001-01-00"); # No zero day parts
 
41
--error 1686
 
42
SELECT DAYOFYEAR("2000-02-30"); # No Feb 30th!
 
43
--error 1686
 
44
SELECT DAYOFYEAR("1900-02-29"); # Not a leap DAYOFYEAR since not divisible evenly by 400...
 
45
--error 1686
 
46
SELECT DAYOFYEAR('1976-15-15'); # No 15th month!
 
47
 
 
48
# A good date, which should output 1
 
49
SELECT DAYOFYEAR("2009-01-01");
 
50
 
 
51
# A good date, which should output 12
 
52
SELECT DAYOFYEAR("2009-01-12");
 
53
 
 
54
# A good date, which should output 365 - Test of 2 digit DAYOFYEAR conversion and proper day...
 
55
SELECT DAYOFYEAR("70-12-31");
 
56
 
 
57
# A good date, which should output 366 - Test of 2 digit DAYOFYEAR conversion and proper day in a leap year...
 
58
SELECT DAYOFYEAR("00-12-31");
 
59
 
 
60
# A good date, which should output 31
 
61
SELECT DAYOFYEAR("0001-01-31");
 
62
 
 
63
# A good date in the common USA format, should output 31+28+31+30+31+30+31= 212
 
64
SELECT DAYOFYEAR('07/31/2009');
 
65
 
 
66
 
67
# Tests for alternate DATETIME syntaxes 
 
68
# in string and numeric formats. All should
 
69
# return  31+28+31+30+31+30+31+31+16= 259
 
70
 
71
SELECT DAYOFYEAR('20090916');
 
72
SELECT DAYOFYEAR('20090916091528');
 
73
SELECT DAYOFYEAR("20090916091528.000000");
 
74
SELECT DAYOFYEAR('09-09-16');
 
75
SELECT DAYOFYEAR('09.09.16');
 
76
SELECT DAYOFYEAR('09/09/16');
 
77
SELECT DAYOFYEAR('09-09-16');
 
78
SELECT DAYOFYEAR('09-9-2');
 
79
SELECT DAYOFYEAR(20090916);
 
80
SELECT DAYOFYEAR(20090916091528);
 
81
--error 1686 # Don't yet support DOUBLE -> DATETIME.
 
82
SELECT DAYOFYEAR(20090916091528.000000);
 
83
 
 
84
# Now test field values of different types
 
85
 
 
86
USE test;
 
87
--disable_warnings
 
88
DROP TABLE IF EXISTS t1;
 
89
--enable_warnings
 
90
CREATE TABLE t1 (
 
91
  int_fld INT NOT NULL
 
92
, date_fld DATE NOT NULL
 
93
, datetime_fld DATETIME NOT NULL
 
94
, timestamp_fld TIMESTAMP NOT NULL
 
95
, char_fld CHAR(22) NOT NULL
 
96
, varchar_fld VARCHAR(22) NOT NULL
 
97
, text_fld TEXT NOT NULL
 
98
, blob_fld BLOB NOT NULL
 
99
);
 
100
 
 
101
# Should all output 31+28+30+31+31+30+31+31+30+31+30= 334
 
102
INSERT INTO t1 VALUES (
 
103
20071130
 
104
, "2007-11-30"
 
105
, "2007-11-30 16:30:19"
 
106
, "2007-11-30T16:30:19"
 
107
, "2007-11-30 16:30:19"
 
108
, "2007-11-30 16:30:19"
 
109
, "2007-11-30T16:30:19"
 
110
, "2007-11-30T16:30:19"
 
111
);
 
112
 
 
113
SELECT DAYOFYEAR(int_fld) FROM t1;
 
114
SELECT DAYOFYEAR(date_fld) FROM t1;
 
115
SELECT DAYOFYEAR(datetime_fld) FROM t1;
 
116
SELECT DAYOFYEAR(timestamp_fld) FROM t1;
 
117
SELECT DAYOFYEAR(char_fld) FROM t1;
 
118
SELECT DAYOFYEAR(varchar_fld) FROM t1;
 
119
SELECT DAYOFYEAR(text_fld) FROM t1;
 
120
SELECT DAYOFYEAR(blob_fld) FROM t1;
 
121
 
 
122
DROP TABLE t1;
 
123