blob: 556936c94b20b141dcfe76da8fc5df4ef3b9b0e5 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="date" rev="2.0.0">
<title>DATE Data Type</title>
<titlealts audience="PDF">
<navtitle>DATE</navtitle>
</titlealts>
<prolog>
<metadata>
<data name="Category" value="Impala"/>
<data name="Category" value="Impala Data Types"/>
<data name="Category" value="SQL"/>
<data name="Category" value="Data Analysts"/>
<data name="Category" value="Developers"/>
<data name="Category" value="Dates and Times"/>
</metadata>
</prolog>
<conbody>
<p> Use the <codeph>DATE</codeph> data type to store date values. The
<codeph>DATE</codeph> type is supported for HBase, Text, Avro, and
Parquet. </p>
<p>
<b>Range:</b>
</p>
<p> 0001-01-01 to 9999-12-31 </p>
<p>
<b>Literals and expressions:</b>
</p>
<p> The <codeph>DATE</codeph> literals are in the form of
<codeph>DATE'YYYY-MM-DD'</codeph>. For examplep, <codeph>DATE
'2013-01-01'</codeph>
</p>
<p>
<b>Parquet and Avro considerations:</b>
</p>
<p> Parquet and Avro use <codeph>DATE</codeph> logical type for dates. The
<codeph>DATE</codeph> logical type annotates an <codeph>INT32</codeph>
that stores the number of days from the Unix epoch, January 1, 1970. This
representation introduces an interoperability issue between Impala and
older versions of Hive: </p>
<p> If Hive versions lower than 3.1 wrote dates earlier than 1582-10-15 to a
Parquet or Avro table, those dates would be read back incorrectly by
Impala and vice versa. In Hive 3.1 and higher, this is no longer an issue. </p>
<p>
<b>Explicit casting between DATE and other data types:</b>
</p>
<p>
<codeph>DATE</codeph> type can only be converted to/from <codeph>DATE</codeph>,
<codeph>TIMESTAMP</codeph>, or <codeph>STRING</codeph> types as described below.
</p>
<table id="table_ovw_zt1_p3b">
<tgroup cols="3">
<colspec colnum="1" colname="col1" colwidth="1*"/>
<colspec colname="newCol2" colnum="2" colwidth="1.09*"/>
<colspec colnum="3" colname="col2" colwidth="3.46*"/>
<thead>
<row>
<entry>
Cast from
</entry>
<entry>
Cast to
</entry>
<entry>
Result
</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<codeph>TIMESTAMP</codeph>
</entry>
<entry>
<codeph>DATE</codeph>
</entry>
<entry>
The date component of the <codeph>TIMESTAMP</codeph> is returned, and the time of
the day component of the <codeph>TIMESTAMP</codeph> is ignored.
</entry>
</row>
<row>
<entry>
<codeph>STRING</codeph>
</entry>
<entry>
<codeph>DATE</codeph>
</entry>
<entry>
The <codeph>DATE</codeph> value of <codeph>yyyy-MM-dd</codeph> is returned.
<p>
The <codeph>STRING</codeph> value must be in the <codeph>yyyy-MM-dd</codeph> or
<codeph>yyyy-MM-dd HH:mm:ss.SSSSSSSSS</codeph> pattern.
</p>
<p>
If the time component is present in <codeph>STRING</codeph>, it is silently
ignored.
</p>
<p>
If the <codeph>STRING</codeph> value does not match the above formats, an error
is returned.
</p>
</entry>
</row>
<row>
<entry>
<codeph>DATE</codeph>
</entry>
<entry>
<codeph>TIMESTAMP</codeph>
</entry>
<entry>
The year, month, and day of the <codeph>DATE</codeph> is returned along with the
time of day component set to <codeph>00:00:00</codeph>.
</entry>
</row>
<row>
<entry>
<codeph>DATE</codeph>
</entry>
<entry>
<codeph>STRING</codeph>
</entry>
<entry>
The <codeph>STRING</codeph> value, <codeph>'yyyy-MM-dd'</codeph>, is returned.
</entry>
</row>
</tbody>
</tgroup>
</table>
<p>
<b>Implicit casting between DATE and other types: </b>
</p>
<p>
Implicit casting is supported:
</p>
<ul>
<li>
From <codeph>STRING</codeph> to <codeph>DATE</codeph> if the source
<codeph>STRING</codeph> value is in the <codeph>yyyy-MM-dd</codeph> or
<codeph>yyyy-MM-dd HH:mm:ss.SSSSSSSSS</codeph> pattern.
</li>
<li>
From <codeph>DATE</codeph> to <codeph>TIMESTAMP</codeph>.
</li>
</ul>
<p>
<b>Added in:</b>
</p>
<p>
The <codeph>DATE</codeph> type is available in Impala 3.3 and higher.
</p>
</conbody>
</concept>