All Products
Search
Document Center

MaxCompute:DATEPART

Last Updated:Jul 26, 2023

Returns a specified component of a date value based on the time unit specified by datepart.

Syntax

bigint datepart(date|datetime|timestamp <date>, string <datepart>)

Parameters

  • date: required. A value of the DATE, DATETIME, or TIMESTAMP type. If the input value is of the STRING type and the MaxCompute V1.0 data type edition is used in your project, the input value is implicitly converted into the DATETIME type before calculation.

  • datepart: required. A constant of the STRING type. This parameter supports Extended Date/Time Format (EDTF).

    The value of this parameter is specified in compliance with the rules of conversions between the STRING and DATETIME types. The value yyyy indicates the year component of a date value. The value mm indicates the month component of a date value. The value dd indicates the day component of a date value. For more information about the rules for type conversions, see Type conversions. The EDTF is also supported, such as -year, -month, -mon, -day, and -hour.

Return value

A value of the BIGINT type is returned. The return value varies based on the following rules:

  • If the value of date is not of the DATE, DATETIME, or TIMESTAMP type, an error is returned.

  • If the value of date is null, an error is returned.

  • If the value of datepart is null, null is returned.

Sample data

This section provides sample source data for you to understand how to use date functions. In this topic, a table named mf_date_fun_t is created and data is inserted into the table. Sample statements:

create table if not exists mf_date_fun_t(
    id      int,
    date1   date,
    datetime1   datetime,
    timestamp1 timestamp,
    date2   date,
    datetime2   datetime,
    timestamp2 timestamp,
    date3 string,
    date4 bigint);
insert into mf_date_fun_t values
(1,DATE'2021-11-29',DATETIME'2021-11-29 00:01:00',TIMESTAMP'2021-01-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-20',123456780),
(2,DATE'2021-11-28',DATETIME'2021-11-28 00:02:00',TIMESTAMP'2021-02-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-21',123456781),
(3,DATE'2021-11-27',DATETIME'2021-11-27 00:03:00',TIMESTAMP'2021-03-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-22',123456782),
(4,DATE'2021-11-26',DATETIME'2021-11-26 00:04:00',TIMESTAMP'2021-04-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-23',123456783),
(5,DATE'2021-11-25',DATETIME'2021-11-25 00:05:00',TIMESTAMP'2021-05-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-24',123456784),
(6,DATE'2021-11-24',DATETIME'2021-11-24 00:06:00',TIMESTAMP'2021-06-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-25',123456785),
(7,DATE'2021-11-23',DATETIME'2021-11-23 00:07:00',TIMESTAMP'2021-07-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-26',123456786),
(8,DATE'2021-11-22',DATETIME'2021-11-22 00:08:00',TIMESTAMP'2021-08-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-27',123456787),
(9,DATE'2021-11-21',DATETIME'2021-11-21 00:09:00',TIMESTAMP'2021-09-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-28',123456788),
(10,DATE'2021-11-20',DATETIME'2021-11-20 00:10:00',TIMESTAMP'2021-10-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-29',123456789);

Query data from the mf_date_fun_t table. Sample statement:

select * from mf_date_fun_t;
-- The following result is returned: 
+------+-------+------------+------------+-------+------------+------------+-------+------------+
| id   | date1 | datetime1  | timestamp1 | date2 | datetime2  | timestamp2 | date3 | date4      |
+------+-------+------------+------------+-------+------------+------------+-------+------------+
| 1    | 2021-11-29 | 2021-11-29 00:01:00 | 2021-01-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-20 | 123456780  |
| 2    | 2021-11-28 | 2021-11-28 00:02:00 | 2021-02-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-21 | 123456781  |
| 3    | 2021-11-27 | 2021-11-27 00:03:00 | 2021-03-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-22 | 123456782  |
| 4    | 2021-11-26 | 2021-11-26 00:04:00 | 2021-04-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-23 | 123456783  |
| 5    | 2021-11-25 | 2021-11-25 00:05:00 | 2021-05-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-24 | 123456784  |
| 6    | 2021-11-24 | 2021-11-24 00:06:00 | 2021-06-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-25 | 123456785  |
| 7    | 2021-11-23 | 2021-11-23 00:07:00 | 2021-07-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-26 | 123456786  |
| 8    | 2021-11-22 | 2021-11-22 00:08:00 | 2021-08-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-27 | 123456787  |
| 9    | 2021-11-21 | 2021-11-21 00:09:00 | 2021-09-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-28 | 123456788  |
| 10   | 2021-11-20 | 2021-11-20 00:10:00 | 2021-10-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-29 | 123456789  |
+------+-------+------------+------------+-------+------------+------------+-------+------------+

Example: static data

-- The return value is 2013. 
select datepart(datetime'2013-06-08 01:10:00', 'yyyy'); 
-- The return value is 6. 
select datepart(datetime'2013-06-08 01:10:00', 'mm');
-- The return value is 2013. 
select datepart(date '2013-06-08', 'yyyy');
-- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. The return value is 2013. 
set odps.sql.type.system.odps2=true;
select datepart(timestamp '2013-06-08 01:10:00', 'yyyy');
-- The return value is 2013. 
set odps.sql.type.system.odps2=false;
select datepart('2013-06-08 01:10:00', 'yyyy');
-- The return value is null. 
select datepart(date '2013-06-08', null);

Example: table data

Extract date values from the date1, datetime1, and timestamp1 columns based on the time unit specified by datepart. Data in Sample data is used in this example. Sample statement:

-- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
set odps.sql.type.system.odps2=true;
select date1, datepart(date1,'yyyy') as date1_datepart, datetime1, datepart(datetime1,'dd') as datetime1_datepart, timestamp1, datepart(timestamp1,'mm') as timestamp1_datepart from mf_date_fun_t;

The following result is returned:

+------------+----------------+---------------------+-------------------------+-------------------------------+---------------------+
| date1      | date1_datepart | datetime1           | datetime1_datepart      | timestamp1                    | timestamp1_datepart |
+------------+----------------+---------------------+-------------------------+-------------------------------+---------------------+
| 2021-11-29 | 2021           | 2021-11-29 00:01:00 | 29                      | 2021-01-11 00:00:00.123456789 | 1                   |
| 2021-11-28 | 2021           | 2021-11-28 00:02:00 | 28                      | 2021-02-11 00:00:00.123456789 | 2                   |
| 2021-11-27 | 2021           | 2021-11-27 00:03:00 | 27                      | 2021-03-11 00:00:00.123456789 | 3                   |
| 2021-11-26 | 2021           | 2021-11-26 00:04:00 | 26                      | 2021-04-11 00:00:00.123456789 | 4                   |
| 2021-11-25 | 2021           | 2021-11-25 00:05:00 | 25                      | 2021-05-11 00:00:00.123456789 | 5                   |
| 2021-11-24 | 2021           | 2021-11-24 00:06:00 | 24                      | 2021-06-11 00:00:00.123456789 | 6                   |
| 2021-11-23 | 2021           | 2021-11-23 00:07:00 | 23                      | 2021-07-11 00:00:00.123456789 | 7                   |
| 2021-11-22 | 2021           | 2021-11-22 00:08:00 | 22                      | 2021-08-11 00:00:00.123456789 | 8                   |
| 2021-11-21 | 2021           | 2021-11-21 00:09:00 | 21                      | 2021-09-11 00:00:00.123456789 | 9                   |
| 2021-11-20 | 2021           | 2021-11-20 00:10:00 | 20                      | 2021-10-11 00:00:00.123456789 | 10                  |
+------------+----------------+---------------------+-------------------------+-------------------------------+---------------------+

Related functions

DATEPART is a date function. For more information about functions related to date computing and conversion, see Date functions.