~drizzle-trunk/drizzle/development

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
EXTRACT DATE FUNCTION
======================

Syntax
------

.. code-block:: mysql

	EXTRACT(field FROM source)

The EXTRACT function retrieves subfields such as day or hour from date/time values. The source value has to be a value expression of type *timestamp*, *time*, *date*, or *interval*. 

*Field* is an identifier or string that identifies the field to extract from the source value. The extract function returns values of type *double precision*. 

Examples
--------

The following field names are available:

day
^^^

.. code-block:: mysql
	
	SELECT EXTRACT(DAY FROM TIMESTAMP '2011-02-16 20:38:40');

Day of the month.

*Result: 16*

decade
^^^^^^

.. code-block:: mysql
	
	SELECT EXTRACT(DECADE FROM TIMESTAMP '2001-02-16 20:38:40');

The year, divided by 10.

*Result: 200*

dow
^^^

.. code-block:: mysql
	
	SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');

The day of the week (Sunday is 0, Saturday is 6)

*Result: 5*

doy
^^^

.. code-block:: mysql

	SELECT EXTRACT(DOY FROM TIMESTAMP '2001-02-16 20:38:40');

The day of the year (1 - 365/366)

*Result: 47*

hour
^^^^

.. code-block:: mysql

	SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');

The hour field (0 - 23)

*Result: 20*

microseconds
^^^^^^^^^^^^

.. code-block:: mysql

	SELECT EXTRACT(MICROSECONDS FROM TIME '17:12:28.5');

The seconds field, including fractional parts, multiplied by 1 000 000; note that this includes full seconds

*Result: 28500000*

minute
^^^^^^

.. code-block:: mysql

	SELECT EXTRACT(MINUTE FROM TIMESTAMP '2001-02-16 20:38:40');

The minutes field (0 - 59)	

*Result: 38*

month
^^^^^

For timestamp values, the number of the month within the year (1 - 12). 
For interval values, the number of months (0 - 11).

.. code-block:: mysql

	SELECT EXTRACT(MONTH FROM TIMESTAMP '2010-12-29 08:45:27');

*Result: 12*

.. code-block:: mysql

	SELECT EXTRACT(MONTH FROM INTERVAL '3 years 4 months');

*Result: 4*

.. code-block:: mysql

	SELECT EXTRACT(MONTH FROM INTERVAL '3 years 13 months');

*Result: 1*

quarter
^^^^^^^

.. code-block:: mysql

	SELECT EXTRACT(QUARTER FROM TIMESTAMP '2010-12-29 08:45:27');

The quarter of the year (1 - 4) containing the date.
	
*Result: 4*

second
^^^^^^

.. code-block:: mysql

	SELECT EXTRACT(SECOND FROM TIMESTAMP '2010-12-29 08:45:27');

The seconds field, including fractional parts (0 - 59)
	
*Result: 27*

.. code-block:: mysql

	SELECT EXTRACT(SECOND FROM TIME '08:15:22.5');

*Result: 22.5*

timezone
^^^^^^^^

The time zone offset from UTC, measured in seconds.

week
^^^^

Returns the week number that a day is in. Weeks are numbered according to ISO 8601:1988.

ISO 8601:1988 means that if the week containing January 1 has four or more days in the new year, then it is week 1; otherwise it is the last week of the previous year, and the next week is week 1. The ISO-8601 week starts on Monday.

It's possible for early January dates to be part of the 52nd or 53rd week of the previous year. For example, 2011-01-01 was part of the 52nd week of year 2010.

.. code-block:: mysql

	SELECT EXTRACT(WEEK FROM TIMESTAMP '2010-01-25 12:44:06');

*Result: 4*

year
^^^^

.. code-block:: mysql

	SELECT EXTRACT(YEAR FROM TIMESTAMP '2009-02-16 20:38:40');

*Result: 2009*

date_part
^^^^^^^^^

The valid field names for date_part are the same as for extract.

.. code-block:: mysql

	SELECT date_part('day', TIMESTAMP '2010-07-16 10:12:05');

*Result: 16*

.. code-block:: mysql

	SELECT date_part('hour', INTERVAL '5 hours 12 minutes');

*Result: 4*