Todos os produtos
Search
Central de documentação

MaxCompute:Funções de data

Última atualização: Sep 16, 2026

Este tópico descreve a sintaxe e os parâmetros das funções de data compatíveis com o MaxCompute. Também são apresentados exemplos de uso dessas funções. Selecione a função de data adequada para realizar cálculos ou conversões de data conforme as necessidades do seu negócio.

Função

Descrição

ADD_MONTHS

Retorna um valor de data obtido após adicionar um número de meses a uma data especificada.

CURRENT_TIMESTAMP

Retorna o timestamp atual.

CURRENT_TIMEZONE

Retorna o fuso horário do sistema atual.

DATE_ADD

Adiciona ou subtrai dias de um valor de data com base no intervalo especificado por delta. Suporta apenas alterações em dias. A função DATE_ADD é o inverso da função DATE_SUB.

DATEADD

Altera um valor de data com base na unidade de tempo especificada por datepart e no intervalo definido por delta. Permite modificações por ano, mês, dia, hora, minuto ou segundo.

DATE_FORMAT

Converte um valor de data em uma string no formato especificado.

DATE_SUB

Adiciona ou subtrai dias de um valor de data conforme o intervalo indicado por delta. A função DATE_SUB é o inverso da função DATE_ADD.

DATEDIFF

Calcula a diferença entre dois valores de data de acordo com a unidade de tempo definida em datepart.

DATEPART

Retorna um componente específico de um valor de data conforme a unidade de tempo indicada em datepart.

DATETRUNC

Trunca um valor de data segundo a unidade de tempo especificada em datepart.

DAY

Retorna o dia correspondente a um valor de data.

DAYOFMONTH

Retorna o componente de dia de um valor de data.

DAYOFWEEK

Retorna o dia da semana correspondente a um valor de data.

DAYOFYEAR

Retorna um inteiro que representa o dia sequencial do ano.

EXTRACT

Retorna um componente específico de um timestamp.

FROM_UNIXTIME

Converte um timestamp UNIX do tipo BIGINT em um valor de data do tipo DATETIME.

FROM_UTC_TIMESTAMP

Converte um timestamp UTC em um timestamp para um fuso horário específico.

GETDATE

Retorna a hora atual do sistema como um valor de data.

HOUR

Retorna o componente de hora de um valor de data.

ISDATE

Verifica se uma string de data pode ser convertida em um valor de data no formato especificado.

LAST_DAY

Retorna o último dia do mês correspondente a um valor de data.

LASTDAY

Retorna o último dia do mês correspondente a um valor de data.

MINUTE

Retorna o componente de minuto de um valor de data.

MONTH

Retorna o mês correspondente a um valor de data.

MONTHS_BETWEEN

Retorna o número de meses entre valores de data especificados.

NEXT_DAY

Retorna a data do primeiro dia da semana posterior a um valor de data que corresponda ao dia da semana especificado.

NOW

Retorna a data e a hora atuais do sistema.

QUARTER

Retorna o trimestre correspondente a um valor de data.

SECOND

Retorna o componente de segundo de um valor de data.

TO_CHAR

Converte um valor de data em uma string no formato especificado.

TO_DATE

Converte uma string em um valor de data no formato especificado.

TO_MILLIS

Converte um valor de data em um timestamp UNIX com precisão de milissegundos.

TRUNC_TIME

Trunca dados de data ou hora conforme a unidade de tempo datepart especificada e retorna dados do tipo STRING.

UNIX_TIMESTAMP

Converte um valor de data em um timestamp UNIX do tipo inteiro.

WEEKDAY

Retorna um número que representa o dia da semana correspondente a um valor de data.

WEEKOFYEAR

Retorna um número que representa a semana do ano correspondente a um valor de data.

YEAR

Retorna o ano correspondente a um valor de data.

Observações de uso

O MaxCompute V2.0 oferece funções adicionais. Caso utilize funções que envolvam novos tipos de dados compatíveis com a edição de tipos de dados do MaxCompute V2.0, execute a instrução SET para ativar essa edição. Os novos tipos incluem TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP e BINARY.

  • Nível de sessão: Para usar a edição de tipos de dados do MaxCompute V2.0, adicione set odps.sql.type.system.odps2=true; antes da instrução SQL desejada e envie ambas para execução conjunta.

  • Nível de projeto: O proprietário do projeto pode ativar a edição de tipos de dados do MaxCompute V2.0 conforme as necessidades do projeto. A configuração entra em vigor após 10 a 15 minutos. Para ativar a edição de tipos de dados do MaxCompute V2.0 no nível do projeto, execute o seguinte comando:

    setproject odps.sql.type.system.odps2=true; 

    Para obter mais informações sobre setproject, consulte Operações de projeto. Para detalhes sobre os cuidados necessários ao ativar a edição de tipos de dados do MaxCompute V2.0 no nível do projeto, consulte Guia de versão de tipos de dados.

Dados de exemplo

Esta seção apresenta dados de origem de exemplo para ilustrar o uso das funções de data. Neste tópico, cria-se uma tabela chamada mf_date_fun_t e insere-se dados nela. Instruções de exemplo:

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);

Consulte os dados da tabela mf_date_fun_t. Instrução de exemplo:

SELECT * FROM mf_date_fun_t;

O resultado retornado é o seguinte.

+------------+------------+---------------------+-------------------------+------------+---------------------+-------------------------+------------+------------+
| 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.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-20 | 123456780  |
| 2          | 2021-11-28 | 2021-11-28 00:02:00 | 2021-02-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-21 | 123456781  |
| 3          | 2021-11-27 | 2021-11-27 00:03:00 | 2021-03-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-22 | 123456782  |
| 4          | 2021-11-26 | 2021-11-26 00:04:00 | 2021-04-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-23 | 123456783  |
| 5          | 2021-11-25 | 2021-11-25 00:05:00 | 2021-05-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-24 | 123456784  |
| 6          | 2021-11-24 | 2021-11-24 00:06:00 | 2021-06-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-25 | 123456785  |
| 7          | 2021-11-23 | 2021-11-23 00:07:00 | 2021-07-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-26 | 123456786  |
| 8          | 2021-11-22 | 2021-11-22 00:08:00 | 2021-08-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-27 | 123456787  |
| 9          | 2021-11-21 | 2021-11-21 00:09:00 | 2021-09-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-28 | 123456788  |
| 10         | 2021-11-20 | 2021-11-20 00:10:00 | 2021-10-11 00:00:00.123 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123 | 2021-11-29 | 123456789  |
+------------+------------+---------------------+-------------------------+------------+---------------------+-------------------------+------------+------------+

ADD_MONTHS

  • Sintaxe

    STRING ADD_MONTHS(DATE|DATETIME|TIMESTAMP|STRING <startdate>, INT <num_months>)
  • Descrição

    Retorna um valor de data obtido após adicionar o número de meses especificado por num_months a startdate. Esta é uma função adicional do MaxCompute V2.0.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    startdate

    Sim

    Valor do tipo DATE, DATETIME, TIMESTAMP ou STRING. O valor deve estar no formato yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3. Se for do tipo STRING, deve conter pelo menos a parte yyyy-mm-dd e não deve incluir strings extras.

    num_months

    Sim

    Valor do tipo INT.

  • Valor de retorno

    Retorna um valor do tipo STRING no formato yyyy-mm-dd. O valor retornado segue as regras abaixo:

    • Se o valor de startdate não for do tipo DATE, DATETIME, TIMESTAMP ou STRING, ou se o formato não atender aos requisitos, retorna null.

    • Se o valor de startdate for null, retorna um erro.

    • Se o valor de num_months for null, retorna null.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 2017-05-14. 
      SELECT ADD_MONTHS('2017-02-14',3);
      
      -- The return value is 0017-05-14. 
      SELECT ADD_MONTHS('17-2-14',3);
      
      -- The return value is 2017-05-14. 
      SELECT ADD_MONTHS('2017-02-14 21:30:00',3);
      
      -- The return value is NULL. 
      SELECT ADD_MONTHS('20170214',3);
      
      -- The return value is NULL. 
      SELECT ADD_MONTHS('2017-02-14 21:30:00',null);
    • Exemplos com dados de tabela

      Adicione meses especificados às datas nas colunas date1, datetime1, timestamp1 e date3. Este exemplo utiliza os dados descritos em Dados de exemplo. Instruções de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             ADD_MONTHS(date1,1) AS date1_add_months, 
             datetime1, 
             ADD_MONTHS(datetime1, 2) AS datetime1_add_months, 
             timestamp1, 
             ADD_MONTHS(timestamp1,3) AS timestamp1_add_months, 
             date3, 
             ADD_MONTHS(date3,4) AS date3_add_months 
      FROM mf_date_fun_t;

      O resultado retornado é o seguinte.

      +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+
      | date1      | date1_add_months | datetime1           | datetime1_add_months | timestamp1                    | timestamp1_add_months | date3      | date3_add_months |
      +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+
      | 2021-11-29 | 2021-12-29       | 2021-11-29 00:01:00 | 2022-01-29           | 2021-01-11 00:00:00.123456789 | 2021-04-11            | 2021-11-20 | 2022-03-20       |
      | 2021-11-28 | 2021-12-28       | 2021-11-28 00:02:00 | 2022-01-28           | 2021-02-11 00:00:00.123456789 | 2021-05-11            | 2021-11-21 | 2022-03-21       |
      | 2021-11-27 | 2021-12-27       | 2021-11-27 00:03:00 | 2022-01-27           | 2021-03-11 00:00:00.123456789 | 2021-06-11            | 2021-11-22 | 2022-03-22       |
      | 2021-11-26 | 2021-12-26       | 2021-11-26 00:04:00 | 2022-01-26           | 2021-04-11 00:00:00.123456789 | 2021-07-11            | 2021-11-23 | 2022-03-23       |
      | 2021-11-25 | 2021-12-25       | 2021-11-25 00:05:00 | 2022-01-25           | 2021-05-11 00:00:00.123456789 | 2021-08-11            | 2021-11-24 | 2022-03-24       |
      | 2021-11-24 | 2021-12-24       | 2021-11-24 00:06:00 | 2022-01-24           | 2021-06-11 00:00:00.123456789 | 2021-09-11            | 2021-11-25 | 2022-03-25       |
      | 2021-11-23 | 2021-12-23       | 2021-11-23 00:07:00 | 2022-01-23           | 2021-07-11 00:00:00.123456789 | 2021-10-11            | 2021-11-26 | 2022-03-26       |
      | 2021-11-22 | 2021-12-22       | 2021-11-22 00:08:00 | 2022-01-22           | 2021-08-11 00:00:00.123456789 | 2021-11-11            | 2021-11-27 | 2022-03-27       |
      | 2021-11-21 | 2021-12-21       | 2021-11-21 00:09:00 | 2022-01-21           | 2021-09-11 00:00:00.123456789 | 2021-12-11            | 2021-11-28 | 2022-03-28       |
      | 2021-11-20 | 2021-12-20       | 2021-11-20 00:10:00 | 2022-01-20           | 2021-10-11 00:00:00.123456789 | 2022-01-11            | 2021-11-29 | 2022-03-29       |
      +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+

CURRENT_TIMESTAMP

  • Sintaxe

    TIMESTAMP CURRENT_TIMESTAMP()
  • Descrição

    Retorna o timestamp atual. O valor retornado não é fixo. Esta é uma função adicional do MaxCompute V2.0.

  • Valor de retorno

    Retorna um valor do tipo TIMESTAMP.

  • Exemplos

    -- The return value is '2017-08-03 11:50:30.661'. 
    SET odps.sql.type.system.odps2=true;
    SELECT CURRENT_TIMESTAMP(); 

CURRENT_TIMEZONE

  • Sintaxe

    STRING CURRENT_TIMEZONE()
  • Descrição

    Retorna o fuso horário do sistema atual.

  • Valor de retorno

    Retorna um valor do tipo STRING.

  • Exemplos

    -- The return value is Asia/Shanghai. 
    SELECT CURRENT_TIMEZONE();

DATE_ADD

  • Sintaxe

    DATE DATE_ADD(DATE|TIMESTAMP|STRING <startdate>, BIGINT <delta>)
  • Descrição

    Adiciona ou subtrai o número de dias especificado por delta de um valor de data definido por startdate.

    Nota
    • Para adicionar ou subtrair dias da hora atual, combine esta função com a função GETDATE.

    • Caso precise de ajustes precisos em horas, minutos ou segundos, consulte a função DATEADD. Esta função suporta apenas incremento ou decremento de uma única unidade entre anos, meses, dias, horas, minutos ou segundos. Para ajustar múltiplas granularidades simultaneamente, recomenda-se o uso de uma função definida pelo usuário.

    • A lógica desta função é oposta à da função DATE_SUB.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    startdate

    Sim

    Data inicial. Aceita valores dos tipos DATE, DATETIME ou STRING.

    Se o valor de entrada for do tipo STRING e o projeto utilizar a edição de tipos de dados do MaxCompute V1.0, ele será convertido implicitamente para DATE antes do cálculo. O valor STRING deve conter pelo menos a parte 'yyyy-mm-dd', como '2019-12-27'.

    delta

    Sim

    Número de dias a adicionar ou subtrair. Deve ser do tipo BIGINT. Se delta for maior que 0, os dias serão adicionados à data inicial. Se delta for menor que 0, os dias serão subtraídos da data inicial. Se delta for igual a 0, o valor da data permanece inalterado.

  • Valor de retorno

    Retorna um valor do tipo DATE no formato yyyy-mm-dd. O valor retornado segue as regras abaixo:

    • Se o valor de startdate não for do tipo DATE, DATETIME ou STRING, retorna um erro.

    • Se o valor de startdate for null, retorna um erro.

    • Se o valor de delta for null, retorna null.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 2005-03-01. After one day is added, the result is beyond the last day of February. The first day of March is returned. 
      SELECT DATE_ADD(DATETIME '2005-02-28 00:00:00', 1);
      
      -- The return value is 2005-02-27. One day is subtracted. 
      SELECT DATE_ADD(DATE '2005-02-28', -1);
      
      -- The return value is 2005-03-20. 
      SET odps.sql.type.system.odps2=false; 
      SELECT DATE_ADD('2005-02-28 00:00:00', 20);
      
      -- If the current time is 2020-11-17 16:31:44, the return value is 2020-11-16. 
      SELECT DATE_ADD(getdate(),-1);
      
      -- The return value is NULL. 
      SELECT DATE_ADD('2005-02-28 00:00:00', null);
    • Exemplos com dados de tabela

      Altere os valores de data nas colunas date1, datetime1 e timestamp1 conforme o número de dias especificado por delta. Este exemplo utiliza os dados descritos em Dados de exemplo. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DATE_ADD(date1, 1) AS date1_date_add, 
             datetime1, 
             DATE_ADD(datetime1, -1) AS datetime1_date_add, 
             timestamp1, 
             DATE_ADD(timestamp1, 0) AS timestamp1_date_add 
      FROM mf_date_fun_t;

      O resultado retornado é o seguinte.

      +------------+----------------+---------------------+-------------------+-------------------------------+--------------------+
      | date1      | date1_date_add | datetime1           | datetime1_date_add| timestamp1                    | timestamp1_date_add|
      +------------+----------------+---------------------+-------------------+-------------------------------+--------------------+
      | 2021-11-29 | 2021-11-30     | 2021-11-29 00:01:00 | 2021-11-28        | 2021-01-11 00:00:00.123456789 | 2021-01-11         |
      | 2021-11-28 | 2021-11-29     | 2021-11-28 00:02:00 | 2021-11-27        | 2021-02-11 00:00:00.123456789 | 2021-02-11         |
      | 2021-11-27 | 2021-11-28     | 2021-11-27 00:03:00 | 2021-11-26        | 2021-03-11 00:00:00.123456789 | 2021-03-11         |
      | 2021-11-26 | 2021-11-27     | 2021-11-26 00:04:00 | 2021-11-25        | 2021-04-11 00:00:00.123456789 | 2021-04-11         |
      | 2021-11-25 | 2021-11-26     | 2021-11-25 00:05:00 | 2021-11-24        | 2021-05-11 00:00:00.123456789 | 2021-05-11         |
      | 2021-11-24 | 2021-11-25     | 2021-11-24 00:06:00 | 2021-11-23        | 2021-06-11 00:00:00.123456789 | 2021-06-11         |
      | 2021-11-23 | 2021-11-24     | 2021-11-23 00:07:00 | 2021-11-22        | 2021-07-11 00:00:00.123456789 | 2021-07-11         |
      | 2021-11-22 | 2021-11-23     | 2021-11-22 00:08:00 | 2021-11-21        | 2021-08-11 00:00:00.123456789 | 2021-08-11         |
      | 2021-11-21 | 2021-11-22     | 2021-11-21 00:09:00 | 2021-11-20        | 2021-09-11 00:00:00.123456789 | 2021-09-11         |
      | 2021-11-20 | 2021-11-21     | 2021-11-20 00:10:00 | 2021-11-19        | 2021-10-11 00:00:00.123456789 | 2021-10-11         |
      +------------+----------------+---------------------+-------------------+-------------------------------+--------------------+

DATEADD

  • Sintaxe

    DATE|DATETIME DATEADD(DATE|DATETIME|TIMESTAMP <date>, BIGINT <delta>, STRING <datepart>)
  • Descrição

    Altera um valor de date com base na unidade de tempo especificada por datepart e no intervalo definido por delta. Para adicionar ou subtrair um intervalo da hora atual, combine esta função com a função GETDATE.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    date

    Sim

    Valor de data do tipo DATE, DATETIME ou TIMESTAMP. Um valor do tipo STRING é convertido implicitamente para DATETIME antes do cálculo se o formato corresponder ao padrão DATETIME yyyy-mm-dd hh:mi:ss, como 2021-08-28 00:00:00, e o projeto utilizar a edição de tipos de dados do MaxCompute V1.0.

    delta

    Sim

    Intervalo a ser adicionado ou subtraído do componente especificado do valor de data. Deve ser do tipo BIGINT. Se delta for maior que 0, o intervalo é adicionado ao valor de data. Caso contrário, o intervalo é subtraído. Se o valor de entrada for do tipo STRING ou DOUBLE, ele será convertido implicitamente para BIGINT antes do cálculo.

    Nota
    • Ao adicionar ou subtrair o intervalo especificado por delta com base na unidade de tempo datepart, pode ocorrer transporte ou retorno em componentes de data mais significativos. As partes de ano, mês, hora, minuto e segundo são calculadas segundo os sistemas numéricos de base 10, base 12, base 24 e base 60, respectivamente.

    • Se a função DATEADD adicionar o intervalo especificado por delta ao componente de mês de um valor de data e essa operação não causar estouro no componente de dia, o valor do dia é mantido. Caso contrário, o componente de dia assume o valor do último dia do mês especificado.

    datepart

    Sim

    Parte da data a ser modificada no valor de data. Deve ser uma constante do tipo STRING. Se o formato do valor de entrada for inválido ou se não for uma constante STRING, retorna um erro.

    O valor deste parâmetro segue as regras de conversão entre os tipos STRING e DATETIME. O valor yyyy indica o componente de ano. O valor mm indica o componente de mês. O valor dd indica o componente de dia. Para mais detalhes sobre as regras de conversão de tipos, consulte Conversão de tipos de dados. O Formato Estendido de Data/Hora (EDTF) também é suportado, como -year, -month, -mon, -day ou -hour.

  • Valor de retorno

    Retorna um valor do tipo DATE ou DATETIME no formato yyyy-mm-dd ou yyyy-mm-dd hh:mi:ss. O valor retornado segue as regras abaixo:

    • Se o valor de date não for do tipo DATE, DATETIME ou TIMESTAMP, retorna um erro.

    • Se o valor de date for null, retorna um erro.

    • Se o valor de delta ou datepart for null, retorna null.

  • Exemplos

    • Exemplos com dados estáticos

      • Exemplo 1: uso comum

        -- The return value is 2005-03-01 00:00:00. After one day is added, the result is beyond the last day of February. The first day of March is returned. 
        SELECT DATEADD(DATETIME '2005-02-28 00:00:00', 1, 'dd');
        
        -- The return value is 2005-02-27 00:00:00. One day is subtracted. 
        SELECT DATEADD(DATETIME '2005-02-28 00:00:00', -1, 'dd');
        
        -- The return value is 2006-10-28 00:00:00. After 20 months are added, the month overflows, and the year value increases by 1. 
        SELECT DATEADD(DATETIME '2005-02-28 00:00:00', 20, 'mm');
        
        -- The return value is 2005-03-28 00:00:00. 
        SELECT DATEADD(DATETIME '2005-02-28 00:00:00', 1, 'mm');
        
        -- The return value is 2005-02-28 00:00:00. February in 2005 has only 28 days. Therefore, the last day of February is returned. 
        SELECT DATEADD(DATETIME '2005-01-29 00:00:00', 1, 'mm');
        
        -- The return value is 2005-02-28 00:00:00. 
        SELECT DATEADD(DATETIME '2005-03-30 00:00:00', -1, 'mm');
        
        -- The return value is 2005-03-18. 
        SELECT DATEADD(DATE '2005-02-18', 1, 'mm');
        
        -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. The return value is 2005-03-18 00:00:00.0. 
        SET odps.sql.type.system.odps2=true;
        SELECT DATEADD(TIMESTAMP '2005-02-18 00:00:00', 1, 'mm');
        
        -- If the current time is 2020-11-17 16:31:44, the return value is 2020-11-16 16:31:44. 
        SELECT DATEADD(GETDATE(),-1,'dd');
        
        -- The return value is NULL. 
        SELECT DATEADD(DATE '2005-02-18', 1, null);
        
        -- The return value is 2005-03-30 02:24:00, with 3 hours subtracted. 
        SELECT DATEADD(DATETIME '2005-03-30 05:24:00', -3, 'hh');
        
        -- The return value is 2005-03-30 04:54:00, with 30 minutes subtracted. 
        SELECT DATEADD(DATETIME '2005-03-30 05:24:00', -30, 'mi');
        
        -- The return value is 2005-03-30 05:23:30, with 30 seconds subtracted.
        SELECT DATEADD(DATETIME '2005-03-30 05:24:00', -30, 'ss');
      • Exemplo 2: uso do DATEADD com valor do tipo DATETIME expresso como constante.

        Em instruções SQL do MaxCompute, um valor do tipo DATETIME não pode ser expresso diretamente como constante. A instrução abaixo utiliza uma expressão inválida para um valor DATETIME:

        SELECT DATEADD(2005-03-30 00:00:00, -1, 'mm');

        Para representar uma constante do tipo DATETIME, utilize uma expressão válida conforme a instrução abaixo:

        -- Explicitly convert a constant of the STRING type into the DATETIME type. The return value is 2005-02-28 00:00:00. 
        SELECT DATEADD(CAST("2005-03-30 00:00:00" AS datetime), -1, 'mm');
      • Exemplo 3: valor de entrada do tipo STRING.

        -- The input value is of the STRING type but does not conform to the DATETIME-type format. As a result, an error is returned. 
        SELECT DATEADD('2021-08-27',1,'dd');
        
        -- The input value is of the STRING type and conforms to the DATETIME-type format, and the MaxCompute V1.0 data type edition is used in your project. The return value is 2005-03-01 00:00:00. 
        SET odps.sql.type.system.odps2=false;
        SELECT DATEADD('2005-02-28 00:00:00', 1, 'dd');
    • Exemplos com dados de tabela

      Altere os valores de data nas colunas date1, datetime1 e timestamp1 conforme a unidade de tempo especificada por datepart e o intervalo definido por delta. Este exemplo utiliza os dados descritos em Dados de exemplo. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DATEADD(date1,1,'dd') AS date1_dateadd, 
             datetime1, 
             DATEADD(datetime1,1,'mm') AS datetime1_dateadd, 
             timestamp1, 
             DATEADD(timestamp1,-1,'yyyy') AS timestamp1_dateadd 
      FROM mf_date_fun_t;

      O resultado retornado é o seguinte.

      +------------+---------------+---------------------+---------------------+-------------------------------+-------------------------------+
      | date1      | date1_dateadd | datetime1           | datetime1_dateadd   | timestamp1                    | timestamp1_dateadd            |
      +------------+---------------+---------------------+---------------------+-------------------------------+-------------------------------+
      | 2021-11-29 | 2021-11-30    | 2021-11-29 00:01:00 | 2021-12-29 00:01:00 | 2021-01-11 00:00:00.123456789 | 2020-01-11 00:00:00.123456789 |
      | 2021-11-28 | 2021-11-29    | 2021-11-28 00:02:00 | 2021-12-28 00:02:00 | 2021-02-11 00:00:00.123456789 | 2020-02-11 00:00:00.123456789 |
      | 2021-11-27 | 2021-11-28    | 2021-11-27 00:03:00 | 2021-12-27 00:03:00 | 2021-03-11 00:00:00.123456789 | 2020-03-11 00:00:00.123456789 |
      | 2021-11-26 | 2021-11-27    | 2021-11-26 00:04:00 | 2021-12-26 00:04:00 | 2021-04-11 00:00:00.123456789 | 2020-04-11 00:00:00.123456789 |
      | 2021-11-25 | 2021-11-26    | 2021-11-25 00:05:00 | 2021-12-25 00:05:00 | 2021-05-11 00:00:00.123456789 | 2020-05-11 00:00:00.123456789 |
      | 2021-11-24 | 2021-11-25    | 2021-11-24 00:06:00 | 2021-12-24 00:06:00 | 2021-06-11 00:00:00.123456789 | 2020-06-11 00:00:00.123456789 |
      | 2021-11-23 | 2021-11-24    | 2021-11-23 00:07:00 | 2021-12-23 00:07:00 | 2021-07-11 00:00:00.123456789 | 2020-07-11 00:00:00.123456789 |
      | 2021-11-22 | 2021-11-23    | 2021-11-22 00:08:00 | 2021-12-22 00:08:00 | 2021-08-11 00:00:00.123456789 | 2020-08-11 00:00:00.123456789 |
      | 2021-11-21 | 2021-11-22    | 2021-11-21 00:09:00 | 2021-12-21 00:09:00 | 2021-09-11 00:00:00.123456789 | 2020-09-11 00:00:00.123456789 |
      | 2021-11-20 | 2021-11-21    | 2021-11-20 00:10:00 | 2021-12-20 00:10:00 | 2021-10-11 00:00:00.123456789 | 2020-10-11 00:00:00.123456789 |
      +------------+---------------+---------------------+---------------------+-------------------------------+-------------------------------+

DATE_FORMAT

  • Sintaxe

    STRING DATE_FORMAT(DATE|TIMESTAMP|STRING <date>, STRING <format>)
  • Descrição

    Converte um valor de date em uma string no format especificado.

  • Parâmetros

    Parameter

    Required

    Description

    date

    Yes

    O valor de data a ser convertido. Esse valor pode ser do tipo DATE, TIMESTAMP ou STRING.

    • Valores de data dos tipos DATE ou STRING são suportados apenas quando a edição de tipos de dados compatível com Hive está ativada. Execute o comando set odps.sql.hive.compatible=true; para ativar essa edição.

    • Caso o valor de data seja do tipo STRING, apenas os seguintes formatos são aceitos:

      • 'yyyy-MM-dd', como '2019-12-27'.

      • 'yyyy-MM-dd hh:mm:ss', como '2019-12-27 12:23:10'.

      • 'yyyy-MM-dd hh:mm:ss.SSS', como '2019-12-27 12:23:10.123'.

    format

    Yes

    Uma constante do tipo STRING. O parâmetro format define o formato da data, como yyyy-MM-dd hh:mm:ss:SSS e yyyy-MM-dd hh:mi:ss:SSS. O valor é composto pelos seguintes elementos:

    • YYYY ou yyyy: o ano. yyyy representa o ano civil e YYYY representa o ano da semana.

      Nota

      O ano da semana pode não coincidir com o ano civil real. Tenha cuidado ao utilizar o formato de ano da semana.

    • MM: o mês.

    • mm: o minuto.

    • dd: o dia.

    • HH: a hora no formato de 24 horas.

    • hh: a hora no formato de 12 horas.

    • mi: o minuto.

    • ss: o segundo.

    • SSS: o milissegundo.

    Importante
    • Quando a edição de tipos de dados compatível com Hive estiver desativada, tanto HH quanto hh indicam o uso do formato de 24 horas. Nesse cenário, o formato da data deve ser yyyy-MM-dd hh:mi:ss. Se for utilizado yyyy-MM-dd hh:mm:ss, o componente mm assumirá o mesmo valor do componente MM.

    • Com a edição de tipos de dados compatível com Hive ativada, HH indica o formato de 24 horas, enquanto hh indica o formato de 12 horas. Nesse caso, o formato da data deve ser yyyy-MM-dd hh:mm:ss. A utilização de yyyy-MM-dd hh:mi:ss resultará em null.

  • Valor de retorno

    Retorna um valor do tipo STRING. O resultado segue as regras abaixo:

    • Se o valor de date não for do tipo DATE ou TIMESTAMP, a função retorna null.

    • Caso o valor de date seja null, um erro será retornado.

    • Quando o valor de format for null, o retorno será null.

  • Exemplos

    • Exemplos com dados estáticos

      -- Enable the Hive-compatible data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.hive.compatible=true;
      
      -- If the current time is 2022-04-24 15:49, the return value is 2022-04-24 03:49:01.902. 
      SELECT DATE_FORMAT(FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC'),'yyyy-MM-dd hh:mm:ss.SSS');
      
      -- The return value is 2022-04-24. 
      SELECT DATE_FORMAT('2022-04-24','yyyy-MM-dd');
    • Exemplos com dados de tabela

      Converta os valores de data nas colunas datetime1 e timestamp1 em strings com um formato específico. Este exemplo utiliza os dados descritos em Dados de amostra. Instruções de exemplo:

      -- Enable the Hive-compatible data type edition and the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.hive.compatible=true;
      SET odps.sql.type.system.odps2=true;
      SELECT datetime1, timestamp1, DATE_FORMAT(datetime1,'yyyy/MM/dd'),
             DATE_FORMAT(datetime1,'yyyy/MM/dd HH:mm:ss'),
             DATE_FORMAT(timestamp1,'yyyy/MM/dd HH:mm:ss')
      FROM mf_date_fun_t;

      O resultado retornado é apresentado a seguir.

      +------------+------------+-----+-----+-----+
      | datetime1  | timestamp1 | _c2 | _c3 | _c4 |
      +------------+------------+-----+-----+-----+
      | 2021-11-29 00:01:00 | 2021-01-11 00:00:00.123456789 | 2021/11/29 | 2021/11/29 00:01:00 | 2021/01/11 00:00:00 |
      | 2021-11-28 00:02:00 | 2021-02-11 00:00:00.123456789 | 2021/11/28 | 2021/11/28 00:02:00 | 2021/02/11 00:00:00 |
      | 2021-11-27 00:03:00 | 2021-03-11 00:00:00.123456789 | 2021/11/27 | 2021/11/27 00:03:00 | 2021/03/11 00:00:00 |
      | 2021-11-26 00:04:00 | 2021-04-11 00:00:00.123456789 | 2021/11/26 | 2021/11/26 00:04:00 | 2021/04/11 00:00:00 |
      | 2021-11-25 00:05:00 | 2021-05-11 00:00:00.123456789 | 2021/11/25 | 2021/11/25 00:05:00 | 2021/05/11 00:00:00 |
      | 2021-11-24 00:06:00 | 2021-06-11 00:00:00.123456789 | 2021/11/24 | 2021/11/24 00:06:00 | 2021/06/11 00:00:00 |
      | 2021-11-23 00:07:00 | 2021-07-11 00:00:00.123456789 | 2021/11/23 | 2021/11/23 00:07:00 | 2021/07/11 00:00:00 |
      | 2021-11-22 00:08:00 | 2021-08-11 00:00:00.123456789 | 2021/11/22 | 2021/11/22 00:08:00 | 2021/08/11 00:00:00 |
      | 2021-11-21 00:09:00 | 2021-09-11 00:00:00.123456789 | 2021/11/21 | 2021/11/21 00:09:00 | 2021/09/11 00:00:00 |
      | 2021-11-20 00:10:00 | 2021-10-11 00:00:00.123456789 | 2021/11/20 | 2021/11/20 00:10:00 | 2021/10/11 00:00:00 |
      +------------+------------+-----+-----+-----+

DATE_SUB

  • Sintaxe

    DATE DATE_SUB(DATE|TIMESTAMP|STRING <startdate>, BIGINT <delta>)
  • Descrição

    Adiciona ou subtrai dias de um valor de data definido por startdate, conforme a quantidade especificada em delta.

    Nota
    • Para somar ou subtrair dias da hora atual, combine esta função com a função GETDATE.

    • Caso precise de ajustes precisos em nível de hora, minuto ou segundo, consulte a função DATEADD. Esta função suporta apenas incremento ou decremento de uma única unidade entre anos, meses, dias, horas, minutos ou segundos. Para ajustar múltiplas granularidades simultaneamente, recomenda-se o uso de uma função definida pelo usuário.

    • A lógica desta função é oposta à da função DATE_ADD.

  • Parâmetros

    Parameter

    Required

    Description

    startdate

    Yes

    A data inicial. Aceita valores dos tipos DATE, DATETIME ou STRING. Se o valor de entrada for do tipo STRING e o projeto utilizar a edição de tipos de dados MaxCompute V1.0, haverá conversão implícita para DATE antes do cálculo. Valores STRING devem conter pelo menos a parte 'yyyy-mm-dd', como '2019-12-27'.

    delta

    Yes

    Quantidade de dias a adicionar ou subtrair. Deve ser do tipo BIGINT. Se delta for maior que 0, os dias serão subtraídos da data inicial. Quando delta for menor que 0, os dias serão adicionados à data inicial. Se delta for igual a 0, a data permanece inalterada.

  • Valor de retorno

    Retorna um valor do tipo DATE no formato yyyy-mm-dd. O resultado obedece às seguintes regras:

    • Um erro é retornado se o valor de startdate não for dos tipos DATE, DATETIME ou STRING.

    • Caso startdate seja null, a função retorna um erro.

    • O retorno será null quando o valor de delta for null.

  • Exemplos

    • Exemplos com dados estáticos

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      
      -- The return value is 2005-02-28. One day is subtracted. The last day of February is returned. 
      SELECT DATE_SUB(datetime '2005-03-01 00:00:00', 1);
      
      -- The return value is 2005-03-01. One day is added. 
      SELECT DATE_SUB(date '2005-02-28', -1);
      
      -- The return value is 2005-02-27. Two days are subtracted. 
      SET odps.sql.type.system.odps2=false; 
      SELECT DATE_SUB('2005-03-01 00:00:00', 2);
      
      -- If the current time is 2021-09-10 16:31:44, the return value is 2021-09-09. 
      SELECT DATE_SUB(GETDATE(),1);
      
      -- The return value is NULL. 
      SELECT DATE_SUB('2005-03-01 00:00:00', null);
    • Exemplos com dados de tabela

      Altere os valores de data nas colunas date1, datetime1 e timestamp1 conforme o número de dias definido em delta. Este exemplo baseia-se nos Dados de amostra. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DATE_SUB(date1,1) AS date1_date_sub, 
             datetime1, 
             DATE_SUB(datetime1,-1) AS datetime1_date_sub, 
             timestamp1, 
             DATE_SUB(timestamp1,0) AS timestamp1_date_sub 
      FROM mf_date_fun_t;

      Confira o resultado retornado abaixo.

      +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+
      | date1      | date1_date_sub | datetime1           | datetime1_date_sub | timestamp1                    | timestamp1_date_sub |
      +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+
      | 2021-11-29 | 2021-11-28     | 2021-11-29 00:01:00 | 2021-11-30         | 2021-01-11 00:00:00.123456789 | 2021-01-11          |
      | 2021-11-28 | 2021-11-27     | 2021-11-28 00:02:00 | 2021-11-29         | 2021-02-11 00:00:00.123456789 | 2021-02-11          |
      | 2021-11-27 | 2021-11-26     | 2021-11-27 00:03:00 | 2021-11-28         | 2021-03-11 00:00:00.123456789 | 2021-03-11          |
      | 2021-11-26 | 2021-11-25     | 2021-11-26 00:04:00 | 2021-11-27         | 2021-04-11 00:00:00.123456789 | 2021-04-11          |
      | 2021-11-25 | 2021-11-24     | 2021-11-25 00:05:00 | 2021-11-26         | 2021-05-11 00:00:00.123456789 | 2021-05-11          |
      | 2021-11-24 | 2021-11-23     | 2021-11-24 00:06:00 | 2021-11-25         | 2021-06-11 00:00:00.123456789 | 2021-06-11          |
      | 2021-11-23 | 2021-11-22     | 2021-11-23 00:07:00 | 2021-11-24         | 2021-07-11 00:00:00.123456789 | 2021-07-11          |
      | 2021-11-22 | 2021-11-21     | 2021-11-22 00:08:00 | 2021-11-23         | 2021-08-11 00:00:00.123456789 | 2021-08-11          |
      | 2021-11-21 | 2021-11-20     | 2021-11-21 00:09:00 | 2021-11-22         | 2021-09-11 00:00:00.123456789 | 2021-09-11          |
      | 2021-11-20 | 2021-11-19     | 2021-11-20 00:10:00 | 2021-11-21         | 2021-10-11 00:00:00.123456789 | 2021-10-11          |
      +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+

DATEDIFF

  • Sintaxe

    BIGINT DATEDIFF(DATE|DATETIME|TIMESTAMP <date1>, DATE|DATETIME|TIMESTAMP <date2>, STRING <datepart>)
  • Descrição

    Calcula a diferença entre date1 e date2. A unidade de tempo dessa diferença é determinada por datepart.

  • Parâmetros

    Parameter

    Required

    Description

    date1 and date2

    Yes

    Valores dos tipos DATE, DATETIME ou TIMESTAMP. Estes parâmetros definem o minuendo e o subtraendo. Se os valores de entrada forem STRING e o projeto usar a edição de tipos de dados MaxCompute V1.0, eles serão convertidos implicitamente para DATETIME antes do cálculo.

    Nota

    O tipo TIMESTAMP é suportado exclusivamente na edição de tipos de dados MaxCompute V2.0. Para mais detalhes, veja Data type version 2.0.

    datepart

    No

    A unidade de tempo, fornecida como uma constante STRING.

    Ao habilitar a edição de tipos de dados MaxCompute V2.0, você pode deixar datepart vazio. Valor padrão: day. Consulte o Data type version guide para saber mais sobre essa edição. Formatos EDTF também são aceitos, como -year, -month, -mon, -day ou -hour.

    Nota

    Esta função ignora unidades inferiores àquela especificada em datepart antes de calcular o resultado.

  • Valor de retorno

    O retorno é do tipo BIGINT e segue estas condições:

    • Retorna erro caso date1 ou date2 não sejam dos tipos DATE, DATETIME ou TIMESTAMP.

    • O valor retornado será negativo se date1 for menor que date2.

    • Null é retornado quando date1 ou date2 for null.

    • Se datepart for null, o resultado também será null.

  • Exemplos

    • Exemplos com dados estáticos

      • Exemplo 1

        SET odps.sql.type.system.odps2=true;
        SELECT DATEDIFF(TIMESTAMP '2006-01-01 00:00:00', TIMESTAMP '2005-12-31 23:59:59', 'dd'); 

        Resultado obtido:

        +------------+
        | _c0        |
        +------------+
        | 1          |
        +------------+
      • Exemplo 2

        SET odps.sql.type.system.odps2=true;
        SELECT DATEDIFF(TIMESTAMP '2006-01-01 00:00:00', TIMESTAMP '2005-12-31 23:59:59', 'mm'); 

        Saída da consulta:

        +------------+
        | _c0        |
        +------------+
        | 1          |
        +------------+
      • Exemplo 3

        SELECT  DATEDIFF(DATETIME '2013-05-31 13:00:00', DATETIME '2013-05-31 12:30:00','ss');

        Veja o retorno abaixo:

        +------------+
        | _c0        |
        +------------+
        | 1800       |
        +------------+
      • Exemplo 4

        SET odps.sql.type.system.odps2 = false;
        SELECT DATEDIFF('2013-05-31 13:00:00','2013-05-31 12:30:00','mi');

        Resposta da execução:

        +------------+
        | _c0        |
        +------------+
        | 30         |
        +------------+
      • Exemplo 5

        -- Date values that are accurate to the millisecond do not adopt the standard DATETIME format and cannot be implicitly converted into the DATETIME type. In this case, an explicit conversion is required.
        SELECT  DATEDIFF(
          TO_DATE('2018-06-04 19:33:23.250','yyyy-mm-dd hh:mi:ss.ff3'),
          TO_DATE('2018-06-04 19:33:23.234','yyyy-mm-dd hh:mi:ss.ff3'),
          'ff3');

        O sistema retornou:

        +------------+
        | _c0        |
        +------------+
        | 16         |
        +------------+
      • Exemplo 6

        SET odps.sql.type.system.odps2=true;
        SELECT  DATEDIFF(DATE '2013-05-21',DATE '2013-05-10',NULL);

        Output gerado:

        +------------+
        | _c0        |
        +------------+
        | NULL       |
        +------------+
    • Exemplos com dados de tabela

      Calcule as diferenças entre os valores das colunas date1 e date2, datetime1 e datetime2, além de timestamp1 e timestamp2. As diferenças seguem a unidade de tempo especificada. Utilize os Dados de amostra para este teste. Comandos de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2 = true;
      
      SELECT  date1, 
              date2, 
              DATEDIFF(date1,date2,'dd') AS date1_date2_datediff, 
              datetime1, 
              datetime2, 
              DATEDIFF(datetime1,datetime2,'dd') AS datetime1_datetime2_datediff, 
              timestamp1, 
              timestamp2, 
              DATEDIFF(timestamp1,timestamp2,'mm') AS timestamp1_timestamp2_datediff
      FROM    mf_date_fun_t;

      A tabela a seguir mostra o resultado.

      +------------+------------+----------------------+---------------------+---------------------+------------------------------+-------------------------------+-------------------------------+--------------------------------+
      | date1      | date2      | date1_date2_datediff | datetime1           | datetime2           | datetime1_datetime2_datediff | timestamp1                    | timestamp2                    | timestamp1_timestamp2_datediff |
      +------------+------------+----------------------+---------------------+---------------------+------------------------------+-------------------------------+-------------------------------+--------------------------------+
      | 2021-11-29 | 2021-10-29 | 31                   | 2021-11-29 00:01:00 | 2021-10-29 00:00:00 | 31                           | 2021-01-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -9                             |
      | 2021-11-28 | 2021-10-29 | 30                   | 2021-11-28 00:02:00 | 2021-10-29 00:00:00 | 30                           | 2021-02-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -8                             |
      | 2021-11-27 | 2021-10-29 | 29                   | 2021-11-27 00:03:00 | 2021-10-29 00:00:00 | 29                           | 2021-03-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -7                             |
      | 2021-11-26 | 2021-10-29 | 28                   | 2021-11-26 00:04:00 | 2021-10-29 00:00:00 | 28                           | 2021-04-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -6                             |
      | 2021-11-25 | 2021-10-29 | 27                   | 2021-11-25 00:05:00 | 2021-10-29 00:00:00 | 27                           | 2021-05-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -5                             |
      | 2021-11-24 | 2021-10-29 | 26                   | 2021-11-24 00:06:00 | 2021-10-29 00:00:00 | 26                           | 2021-06-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -4                             |
      | 2021-11-23 | 2021-10-29 | 25                   | 2021-11-23 00:07:00 | 2021-10-29 00:00:00 | 25                           | 2021-07-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -3                             |
      | 2021-11-22 | 2021-10-29 | 24                   | 2021-11-22 00:08:00 | 2021-10-29 00:00:00 | 24                           | 2021-08-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -2                             |
      | 2021-11-21 | 2021-10-29 | 23                   | 2021-11-21 00:09:00 | 2021-10-29 00:00:00 | 23                           | 2021-09-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -1                             |
      | 2021-11-20 | 2021-10-29 | 22                   | 2021-11-20 00:10:00 | 2021-10-29 00:00:00 | 22                           | 2021-10-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | 0                              |
      +------------+------------+----------------------+---------------------+---------------------+------------------------------+-------------------------------+-------------------------------+--------------------------------+

DATEPART

  • Sintaxe

    BIGINT DATEPART(DATE|DATETIME|TIMESTAMP <date>, STRING <datepart>)
  • Descrição

    Extrai um componente específico de um valor de date, de acordo com a unidade de tempo informada em datepart.

  • Parâmetros

    Parameter

    Required

    Description

    date

    Yes

    Valor dos tipos DATE, DATETIME ou TIMESTAMP. Caso a entrada seja STRING e o projeto utilize a edição MaxCompute V1.0, a conversão implícita para DATETIME ocorre antes do cálculo.

    datepart

    Yes

    Constante do tipo STRING. Suporta notação EDTF.

    A definição deste parâmetro segue as regras de conversão entre STRING e DATETIME. Use yyyy para extrair o ano, mm para o mês e dd para o dia. Veja as regras completas em Conversão de tipos de dados. Notações EDTF como -year, -month, -mon, -day ou -hour também são válidas.

  • Valor de retorno

    Retorna um inteiro BIGINT. Aplique as seguintes regras de validação:

    • Gera erro se date não pertencer aos tipos DATE, DATETIME ou TIMESTAMP.

    • Falha com erro quando date é null.

    • Produz null caso datepart seja null.

  • Exemplos

    • Exemplos com dados estáticos

      -- 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 the following SET statement together 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);
    • Exemplos com dados de tabela

      Extraia partes das datas nas colunas date1, datetime1 e timestamp1 usando a unidade definida em datepart. Os Dados de amostra servem de base para este exemplo. Query de demonstração:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together 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;

      Observe a saída processada:

      +------------+----------------+---------------------+-------------------------+-------------------------------+---------------------+
      | 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                  |
      +------------+----------------+---------------------+-------------------------+-------------------------------+---------------------+

DATETRUNC

  • Sintaxe

    DATE|DATETIME DATETRUNC(DATE|DATETIME|TIMESTAMP <date>, STRING <datepart>)
  • Descrição

    Trunca um valor de date conforme a granularidade definida em datepart.

  • Parâmetros

    Parameter

    Required

    Description

    date

    Yes

    Aceita entradas DATE, DATETIME ou TIMESTAMP. Projetos na edição MaxCompute V1.0 convertem implicitamente strings STRING para DATETIME antes de processar.

    datepart

    Yes

    Constante STRING com suporte a EDTF.

    Siga as normas de conversão STRING-DATETIME ao definir este parâmetro. Utilize yyyy para ano, mm para mês e dd para dia. Detalhes adicionais estão disponíveis em Conversão de tipos de dados. Opções EDTF incluem -year, -month, -mon, -day e -hour.

  • Valor de retorno

    Devolve um valor DATE ou DATETIME formatado como yyyy-mm-dd ou yyyy-mm-dd hh:mi:ss. Considere as restrições abaixo:

    • Tipo inválido em date (diferente de DATE, DATETIME ou TIMESTAMP) causa erro.

    • Erro de execução ocorre se date for null.

    • Resultado null é esperado quando datepart é null.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 2011-01-01 00:00:00. 
      SELECT DATETRUNC(DATETIME '2011-12-07 16:28:46', 'yyyy');
      
      -- The return value is 2011-12-01 00:00:00. 
      SELECT DATETRUNC(DATETIME'2011-12-07 16:28:46', 'month');
      
      -- The return value is 2011-12-07 00:00:00. 
      SELECT DATETRUNC(DATETIME'2011-12-07 16:28:46', 'DD');
      
      -- The return value is 2011-01-01. 
      SELECT DATETRUNC(DATE '2011-12-07', 'yyyy');
      
      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. The return value is 2011-01-01 00:00:00.0. 
      SET odps.sql.type.system.odps2=true;
      SELECT DATETRUNC(TIMESTAMP '2011-12-07 16:28:46', 'yyyy');
      
      -- The return value is 2011-01-01 00:00:00.0. 
      SET odps.sql.type.system.odps2=false;
      SELECT DATETRUNC('2011-12-07 16:28:46', 'yyyy');
      
      -- The return value is NULL. 
      SELECT DATETRUNC(DATE '2011-12-07', null);
    • Exemplos com dados de tabela

      Trunque as datas presentes nas colunas date1, datetime1 e timestamp1 respeitando a unidade de tempo em datepart. Consulte os Dados de amostra para reproduzir este cenário. Script SQL:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DATETRUNC(date1,'yyyy') AS date1_datetrunc, 
             datetime1, 
             DATETRUNC(datetime1,'dd') AS datetime1_datetrunc, 
             timestamp1, 
             DATETRUNC(timestamp1,'mm') AS timestamp1_datetrunc 
        FROM mf_date_fun_t;

      Listagem final dos dados truncados:

      +------------+-----------------+---------------------+---------------------+-------------------------------+----------------------+
      | date1      | date1_datetrunc | datetime1           | datetime1_datetrunc | timestamp1                    | timestamp1_datetrunc |
      +------------+-----------------+---------------------+---------------------+-------------------------------+----------------------+
      | 2021-11-29 | 2021-01-01      | 2021-11-29 00:01:00 | 2021-11-29 00:00:00 | 2021-01-11 00:00:00.123456789 | 2021-01-01 00:00:00  |
      | 2021-11-28 | 2021-01-01      | 2021-11-28 00:02:00 | 2021-11-28 00:00:00 | 2021-02-11 00:00:00.123456789 | 2021-02-01 00:00:00  |
      | 2021-11-27 | 2021-01-01      | 2021-11-27 00:03:00 | 2021-11-27 00:00:00 | 2021-03-11 00:00:00.123456789 | 2021-03-01 00:00:00  |
      | 2021-11-26 | 2021-01-01      | 2021-11-26 00:04:00 | 2021-11-26 00:00:00 | 2021-04-11 00:00:00.123456789 | 2021-04-01 00:00:00  |
      | 2021-11-25 | 2021-01-01      | 2021-11-25 00:05:00 | 2021-11-25 00:00:00 | 2021-05-11 00:00:00.123456789 | 2021-05-01 00:00:00  |
      | 2021-11-24 | 2021-01-01      | 2021-11-24 00:06:00 | 2021-11-24 00:00:00 | 2021-06-11 00:00:00.123456789 | 2021-06-01 00:00:00  |
      | 2021-11-23 | 2021-01-01      | 2021-11-23 00:07:00 | 2021-11-23 00:00:00 | 2021-07-11 00:00:00.123456789 | 2021-07-01 00:00:00  |
      | 2021-11-22 | 2021-01-01      | 2021-11-22 00:08:00 | 2021-11-22 00:00:00 | 2021-08-11 00:00:00.123456789 | 2021-08-01 00:00:00  |
      | 2021-11-21 | 2021-01-01      | 2021-11-21 00:09:00 | 2021-11-21 00:00:00 | 2021-09-11 00:00:00.123456789 | 2021-09-01 00:00:00  |
      | 2021-11-20 | 2021-01-01      | 2021-11-20 00:10:00 | 2021-11-20 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-10-01 00:00:00  |
      +------------+-----------------+---------------------+---------------------+-------------------------------+----------------------+

DAY

  • Sintaxe

    INT DAY(DATETIME|TIMESTAMP|DATE|STRING <date>)
  • Descrição

    Retorna o dia em que um valor de data se encontra. Esta função é uma função adicional do MaxCompute V2.0.

  • Parâmetros

    date: obrigatório. Um valor de data do tipo DATETIME, TIMESTAMP, DATE ou STRING. O valor de entrada deve estar no formato yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Se o valor for do tipo STRING, ele deve incluir pelo menos a parte yyyy-mm-dd e não pode conter strings extras.

  • Valor de retorno

    Um valor do tipo INT é retornado. O valor de retorno varia conforme as seguintes regras:

    • Se o valor de date não for do tipo DATETIME, TIMESTAMP, DATE ou STRING, ou se o formato não atender aos requisitos, null será retornado.

    • Se o valor de date for null, null será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      -- The value 1 is returned. 
      SELECT DAY('2014-09-01');
      
      -- The return value is NULL. 
      SELECT DAY('20140901');
      
      -- The return value is NULL. 
      SELECT DAY(null);
    • Exemplos com dados de tabela

      Obtenha o dia em que cada valor de data nas colunas date1, datetime1, timestamp1 e date3 se encontra. Os dados em Dados de amostra são usados neste exemplo. Instruções de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DAY(date1) AS date1_day, 
             datetime1, 
             DAY(datetime1) AS datetime1_day, 
             timestamp1, 
             DAY(timestamp1) AS timestamp1_day, 
             date3, 
             DAY(date3) AS date3_day 
        FROM mf_date_fun_t;

      O seguinte resultado é retornado.

      +------------+-----------+---------------------+---------------+-------------------------------+----------------+------------+-----------+
      | date1      | date1_day | datetime1           | datetime1_day | timestamp1                    | timestamp1_day | date3      | date3_day |
      +------------+-----------+---------------------+---------------+-------------------------------+----------------+------------+-----------+
      | 2021-11-29 | 29        | 2021-11-29 00:01:00 | 29            | 2021-01-11 00:00:00.123456789 | 11             | 2021-11-20 | 20        |
      | 2021-11-28 | 28        | 2021-11-28 00:02:00 | 28            | 2021-02-11 00:00:00.123456789 | 11             | 2021-11-21 | 21        |
      | 2021-11-27 | 27        | 2021-11-27 00:03:00 | 27            | 2021-03-11 00:00:00.123456789 | 11             | 2021-11-22 | 22        |
      | 2021-11-26 | 26        | 2021-11-26 00:04:00 | 26            | 2021-04-11 00:00:00.123456789 | 11             | 2021-11-23 | 23        |
      | 2021-11-25 | 25        | 2021-11-25 00:05:00 | 25            | 2021-05-11 00:00:00.123456789 | 11             | 2021-11-24 | 24        |
      | 2021-11-24 | 24        | 2021-11-24 00:06:00 | 24            | 2021-06-11 00:00:00.123456789 | 11             | 2021-11-25 | 25        |
      | 2021-11-23 | 23        | 2021-11-23 00:07:00 | 23            | 2021-07-11 00:00:00.123456789 | 11             | 2021-11-26 | 26        |
      | 2021-11-22 | 22        | 2021-11-22 00:08:00 | 22            | 2021-08-11 00:00:00.123456789 | 11             | 2021-11-27 | 27        |
      | 2021-11-21 | 21        | 2021-11-21 00:09:00 | 21            | 2021-09-11 00:00:00.123456789 | 11             | 2021-11-28 | 28        |
      | 2021-11-20 | 20        | 2021-11-20 00:10:00 | 20            | 2021-10-11 00:00:00.123456789 | 11             | 2021-11-29 | 29        |
      +------------+-----------+---------------------+---------------+-------------------------------+----------------+------------+-----------+

DAYOFMONTH

  • Sintaxe

    INT DAYOFMONTH(DATETIME|TIMESTAMP|DATE|STRING <date>)
  • Descrição

    Retorna o componente de dia de um valor de data. Esta função é uma função adicional do MaxCompute V2.0.

  • Parâmetros

    date: obrigatório. Um valor de data do tipo DATETIME, TIMESTAMP, DATE ou STRING. O valor de entrada deve estar no formato yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Se o valor for do tipo STRING, ele deve incluir pelo menos a parte yyyy-mm-dd e não pode conter strings extras.

  • Valor de retorno

    Um valor do tipo INT é retornado. O valor de retorno varia conforme as seguintes regras:

    • Se o valor de date não for do tipo DATETIME, TIMESTAMP, DATE ou STRING, ou se o formato não atender aos requisitos, null será retornado.

    • Se o valor de date for null, null será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      -- The value 1 is returned. 
      SELECT DAYOFMONTH('2014-09-01');
      
      -- The return value is NULL. 
      SELECT DAYOFMONTH('20140901');
      
      -- The return value is NULL. 
      SELECT DAYOFMONTH(null);
    • Exemplos com dados de tabela

      Obtenha os componentes de dia dos valores de data nas colunas date1, datetime1, timestamp1 e date3. Os dados em Dados de amostra são usados neste exemplo. Instruções de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             DAYOFMONTH(date1) AS date1_dayofmonth, 
             datetime1, 
             DAYOFMONTH(datetime1) AS datetime1_dayofmonth, 
             timestamp1, 
             DAYOFMONTH(timestamp1) AS timestamp1_dayofmonth, 
             date3, 
             DAYOFMONTH(date3) AS date3_dayofmonth 
        FROM mf_date_fun_t;

      O seguinte resultado é retornado.

      +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+
      | date1      | date1_dayofmonth | datetime1           | datetime1_dayofmonth | timestamp1                    | timestamp1_dayofmonth | date3      | date3_dayofmonth |
      +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+
      | 2021-11-29 | 29               | 2021-11-29 00:01:00 | 29                   | 2021-01-11 00:00:00.123456789 | 11                    | 2021-11-20 | 20               |
      | 2021-11-28 | 28               | 2021-11-28 00:02:00 | 28                   | 2021-02-11 00:00:00.123456789 | 11                    | 2021-11-21 | 21               |
      | 2021-11-27 | 27               | 2021-11-27 00:03:00 | 27                   | 2021-03-11 00:00:00.123456789 | 11                    | 2021-11-22 | 22               |
      | 2021-11-26 | 26               | 2021-11-26 00:04:00 | 26                   | 2021-04-11 00:00:00.123456789 | 11                    | 2021-11-23 | 23               |
      | 2021-11-25 | 25               | 2021-11-25 00:05:00 | 25                   | 2021-05-11 00:00:00.123456789 | 11                    | 2021-11-24 | 24               |
      | 2021-11-24 | 24               | 2021-11-24 00:06:00 | 24                   | 2021-06-11 00:00:00.123456789 | 11                    | 2021-11-25 | 25               |
      | 2021-11-23 | 23               | 2021-11-23 00:07:00 | 23                   | 2021-07-11 00:00:00.123456789 | 11                    | 2021-11-26 | 26               |
      | 2021-11-22 | 22               | 2021-11-22 00:08:00 | 22                   | 2021-08-11 00:00:00.123456789 | 11                    | 2021-11-27 | 27               |
      | 2021-11-21 | 21               | 2021-11-21 00:09:00 | 21                   | 2021-09-11 00:00:00.123456789 | 11                    | 2021-11-28 | 28               |
      | 2021-11-20 | 20               | 2021-11-20 00:10:00 | 20                   | 2021-10-11 00:00:00.123456789 | 11                    | 2021-11-29 | 29               |
      +------------+------------------+---------------------+----------------------+-------------------------------+-----------------------+------------+------------------+

DAYOFWEEK

  • Sintaxe

    INT DAYOFWEEK(DATETIME|TIMESTAMP|DATE|STRING <date>)
  • Descrição

    Retorna o dia da semana em que um valor de data se encontra. Esta função é uma função adicional do MaxCompute V2.0.

  • Parâmetros

    date: obrigatório. Um valor de data do tipo DATETIME, TIMESTAMP, DATE ou STRING. O valor de entrada deve estar no formato yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Se o valor for do tipo STRING, ele deve incluir pelo menos a parte yyyy-mm-dd e não pode conter strings extras.

  • Valor de retorno

    Um valor do tipo INT é retornado. O valor de retorno varia conforme as seguintes regras:

    • Se o valor de date não for do tipo DATETIME, TIMESTAMP, DATE ou STRING, ou se o formato não atender aos requisitos, null será retornado.

    • Se o valor de date for null, null será retornado.

    • O valor de retorno varia de 1 a 7. O valor 1 indica domingo, o valor 2 indica segunda-feira, e a mesma regra se aplica aos demais valores.

  • Exemplos

    -- The return value is 5. The return value indicates Thursday. 
    SELECT DAYOFWEEK('2009-07-30');

DAYOFYEAR

  • Sintaxe

    INT DAYOFYEAR(DATETIME|TIMESTAMP|DATE|STRING <date>)
  • Descrição

    Retorna um inteiro que representa o dia sequencial do ano. Esta função é uma função adicional do MaxCompute V2.0.

  • Parâmetros

    date: obrigatório. Um valor de data do tipo DATETIME, TIMESTAMP, DATE ou STRING. O valor de entrada deve estar no formato yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Se o valor for do tipo STRING, ele deve incluir pelo menos a parte yyyy-mm-dd e não pode conter strings extras.

  • Valor de retorno

    Um valor do tipo INT é retornado. O valor de retorno varia conforme as seguintes regras:

    • Se o valor de date não for do tipo DATETIME, TIMESTAMP, DATE ou STRING, ou se o formato não atender aos requisitos, null será retornado.

    • Se o valor de date for null, null será retornado.

  • Exemplos

    -- The return value is 100. 
    SELECT DAYOFYEAR('2016-04-09');

EXTRACT

  • Sintaxe

    INT EXTRACT(<datepart> FROM DATE|DATETIME|TIMESTAMP <date>)
  • Descrição

    Extrai o componente de data especificado por datepart de um valor de data especificado por date. Esta função é uma função adicional do MaxCompute V2.0.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    datepart

    Sim

    O valor pode ser YEAR, MONTH, DAY, HOUR, MINUTE ou SECOND.

    date

    Sim

    Um valor de data do tipo DATE, DATETIME, TIMESTAMP ou STRING. O valor de entrada deve estar no formato yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3. Se o valor for do tipo STRING, ele deve incluir pelo menos a parte yyyy-mm-dd e não deve conter strings extras.

  • Valor de retorno

    Um valor do tipo INT é retornado. O valor de retorno varia conforme as seguintes regras:

    • Se o valor de datepart não for YEAR, MONTH, DAY, HOUR, MINUTE ou SECOND, um erro será retornado.

    • Se o valor de datepart for null, um erro será retornado.

    • Se o valor de date não for do tipo DATE, DATETIME, TIMESTAMP ou STRING, ou se for null, null será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT  EXTRACT(YEAR FROM '2019-05-01 11:21:00') YEAR, 
              EXTRACT(MONTH FROM '2019-05-01 11:21:00') MONTH, 
              EXTRACT(DAY FROM '2019-05-01 11:21:00') DAY, 
              EXTRACT(HOUR FROM '2019-05-01 11:21:00') HOUR, 
              EXTRACT(MINUTE FROM '2019-05-01 11:21:00') MINUTE;
              
      -- The following result is returned: 
      +------+-------+------+------+--------+
      | year | month | day  | hour | minute |
      +------+-------+------+------+--------+
      | 2019 | 5     | 1    | 11   | 21     |
      +------+-------+------+------+--------+
      
      -- The return value is NULL. 
      SELECT  EXTRACT(YEAR FROM null);
    • Exemplos com dados de tabela

      Extraia os componentes de data especificados dos valores de data na coluna timestamp1. Os dados em Dados de amostra são usados neste exemplo. Instruções de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT timestamp1, 
             EXTRACT(YEAR FROM timestamp1) YEAR, 
             timestamp2, 
             EXTRACT(MONTH from timestamp2) MONTH 
        FROM mf_date_fun_t;

      O seguinte resultado é retornado.

      +-------------------------------+------+-------------------------------+-------+
      | timestamp1                    | year | timestamp2                    | month |
      +-------------------------------+------+-------------------------------+-------+
      | 2021-01-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-02-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-03-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-04-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-05-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-06-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-07-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-08-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-09-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      | 2021-10-11 00:00:00.123456789 | 2021 | 2021-10-11 00:00:00.123456789 | 10    |
      +-------------------------------+------+-------------------------------+-------+

FROM_UNIXTIME

  • Sintaxe

    DATETIME FROM_UNIXTIME(BIGINT <unixtime>)
  • Descrição

    Converte unixtime do tipo BIGINT em um valor de data do tipo DATETIME.

  • Parâmetros

    unixtime: obrigatório. Um valor de data do tipo BIGINT no formato UNIX. O valor deste parâmetro tem precisão de segundos. Valores válidos: [-62167305600, 253402387200].

    Nota

    Se o valor de entrada for do tipo STRING, DOUBLE ou DECIMAL e a edição de tipos de dados do MaxCompute V1.0 estiver em uso no seu projeto, o valor de entrada será convertido implicitamente para o tipo BIGINT antes do cálculo.

  • Valor de retorno

    Um valor do tipo DATETIME é retornado. O valor de retorno está no formato yyyy-mm-dd hh:mi:ss. Se o valor de unixtime for null, null será retornado.

    Nota

    Execute o comando set odps.sql.hive.compatible=true; para ativar a edição de tipos de dados compatível com Hive. Na edição compatível com Hive, observe as seguintes regras:

    • Se o valor de entrada for do tipo STRING, um valor de data do tipo STRING será retornado.

    • É possível especificar o segundo parâmetro de entrada para determinar o formato do valor de retorno. Por exemplo, você pode definir o formato de data e hora do valor de retorno no segundo parâmetro de entrada como yyyy-MM-dd ou YYYY-MM-dd. yyyy representa o ano civil e YYYY representa o ano da semana. O ano da semana pode não coincidir com o ano real. Tenha cautela ao utilizar o formato de ano da semana.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 1973-11-30 05:33:09. 
      SELECT FROM_UNIXTIME(123456789);
      
      -- The return value is 1973-11-30 05:33:09. 
      SET odps.sql.type.system.odps2=false;
      SELECT FROM_UNIXTIME('123456789');
      
      -- The return value is NULL. 
      SELECT FROM_UNIXTIME(null);
    • Exemplos com dados de tabela

      Converta os valores na coluna date4 em valores de data. Os dados em Dados de amostra são usados neste exemplo. Instrução de exemplo:

      SELECT date4, FROM_UNIXTIME(date4) AS date4_from_unixtime FROM mf_date_fun_t;

      O seguinte resultado é retornado.

      +------------+---------------------+
      | date4      | date4_from_unixtime |
      +------------+---------------------+
      | 123456780  | 1973-11-30 05:33:00 |
      | 123456781  | 1973-11-30 05:33:01 |
      | 123456782  | 1973-11-30 05:33:02 |
      | 123456783  | 1973-11-30 05:33:03 |
      | 123456784  | 1973-11-30 05:33:04 |
      | 123456785  | 1973-11-30 05:33:05 |
      | 123456786  | 1973-11-30 05:33:06 |
      | 123456787  | 1973-11-30 05:33:07 |
      | 123456788  | 1973-11-30 05:33:08 |
      | 123456789  | 1973-11-30 05:33:09 |
      +------------+---------------------+

FROM_UTC_TIMESTAMP

  • Sintaxe

    TIMESTAMP FROM_UTC_TIMESTAMP({any primitive type}*, STRING <timezone>)
  • Descrição

    Retorna um timestamp convertido do Horário Universal Coordenado (UTC) para um fuso horário especificado. Esta função é uma função adicional do MaxCompute V2.0.

    Importante

    O valor de retorno da função FROM_UTC_TIMESTAMP também é afetado pelo valor de odps.sql.timezone configurado no seu projeto. Se você configurar odps.sql.timezone=Asia/Shanghai, o fuso horário UTC+8 será usado, o que representa 8 horas à frente do UTC. Nesse caso, 8 horas são adicionadas ao resultado do cálculo da função FROM_UTC_TIMESTAMP. Por exemplo, a função FROM_UTC_TIMESTAMP(0, 'Asia/Shanghai') converte um timestamp com UTC+0 em um timestamp com o horário de Pequim (UTC+08:00), e o resultado do cálculo é 0 + 8 x 3600 = 28800. A configuração odps.sql.timezone=Asia/Shanghai exige outro deslocamento de 8 horas. Como resultado, o valor de retorno é 1970-01-01 16:00:00.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    {any primitive type}*

    Sim

    Um timestamp do tipo TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT ou BIGINT. Se o valor for do tipo TINYINT, SMALLINT, INT ou BIGINT, a unidade de tempo tem precisão de milissegundos.

    timezone

    Sim

    O novo fuso horário.

    Nota

    Pesquise a lista de fusos horários usando um mecanismo de busca.

  • Valor de retorno

    Um valor do tipo TIMESTAMP é retornado. O valor de retorno está no formato yyyy-mm-dd hh:mi:ss.ff3. O valor de retorno varia conforme as seguintes regras:

    • Se o valor de {any primitive type}* não for do tipo TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT ou BIGINT, um erro será retornado.

    • Se o valor de {any primitive type}* for null, um erro será retornado.

    • Se o valor de timezone for null, null será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      -- The time unit of the input value is accurate to the millisecond and the return value is 2017-08-01 04:24:00.0. 
      SELECT FROM_UTC_TIMESTAMP(1501557840000, 'PST'); 
      
      -- The return value is 1970-01-30 08:00:00.0. 
      SELECT FROM_UTC_TIMESTAMP('1970-01-30 16:00:00','PST'); 
      
      -- The return value is 1970-01-29 16:00:00.0. 
      SELECT FROM_UTC_TIMESTAMP('1970-01-30','PST'); 
      
      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. The return value is 2011-12-25 17:00:00:00.123. 
      SET odps.sql.type.system.odps2=true;
      SELECT FROM_UTC_TIMESTAMP(timestamp '2011-12-25 09:00:00.123456', 'Asia/Shanghai');
      
      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. The return value is 2011-12-25 01:55:00.0. 
      SET odps.sql.type.system.odps2=true;
      SELECT FROM_UTC_TIMESTAMP(timestamp '2011-12-25 06:55:00', 'America/Toronto');
      
      -- The return value is NULL. 
      SELECT FROM_UTC_TIMESTAMP('1970-01-30',null);
    • Exemplos com dados de tabela

      Converta os valores de data nas colunas datetime1 e timestamp1 em timestamps de um fuso horário especificado. Os dados em Dados de amostra são usados neste exemplo. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT datetime1, 
             FROM_UTC_TIMESTAMP(datetime1,'PST') pst, 
             timestamp1, 
             FROM_UTC_TIMESTAMP(timestamp1,'Asia/Shanghai') asia 
        FROM mf_date_fun_t;

      O seguinte resultado é retornado.

      +---------------------+---------------------+-------------------------------+-------------------------------+
      | datetime1           | pst                 | timestamp1                    | asia                          |
      +---------------------+---------------------+-------------------------------+-------------------------------+
      | 2021-11-29 00:01:00 | 2021-11-28 16:01:00 | 2021-01-11 00:00:00.123456789 | 2021-01-11 08:00:00.123456789 |
      | 2021-11-28 00:02:00 | 2021-11-27 16:02:00 | 2021-02-11 00:00:00.123456789 | 2021-02-11 08:00:00.123456789 |
      | 2021-11-27 00:03:00 | 2021-11-26 16:03:00 | 2021-03-11 00:00:00.123456789 | 2021-03-11 08:00:00.123456789 |
      | 2021-11-26 00:04:00 | 2021-11-25 16:04:00 | 2021-04-11 00:00:00.123456789 | 2021-04-11 08:00:00.123456789 |
      | 2021-11-25 00:05:00 | 2021-11-24 16:05:00 | 2021-05-11 00:00:00.123456789 | 2021-05-11 08:00:00.123456789 |
      | 2021-11-24 00:06:00 | 2021-11-23 16:06:00 | 2021-06-11 00:00:00.123456789 | 2021-06-11 08:00:00.123456789 |
      | 2021-11-23 00:07:00 | 2021-11-22 16:07:00 | 2021-07-11 00:00:00.123456789 | 2021-07-11 08:00:00.123456789 |
      | 2021-11-22 00:08:00 | 2021-11-21 16:08:00 | 2021-08-11 00:00:00.123456789 | 2021-08-11 08:00:00.123456789 |
      | 2021-11-21 00:09:00 | 2021-11-20 16:09:00 | 2021-09-11 00:00:00.123456789 | 2021-09-11 08:00:00.123456789 |
      | 2021-11-20 00:10:00 | 2021-11-19 16:10:00 | 2021-10-11 00:00:00.123456789 | 2021-10-11 08:00:00.123456789 |
      +---------------------+---------------------+-------------------------------+-------------------------------+

GETDATE

  • Sintaxe

    DATETIME GETDATE()
  • Descrição

    Retorna a hora atual do sistema como um valor de data. O MaxCompute utiliza UTC+8 como fuso horário padrão.

  • Valor de retorno

    A data e hora atuais são retornadas, sendo do tipo DATETIME.

    Nota

    No SQL do MaxCompute, GETDATE sempre retorna um valor fixo. O valor de retorno é um horário arbitrário durante a execução da tarefa SQL do MaxCompute. O horário tem precisão de segundos. Se você ativar a edição de tipos de dados do MaxCompute V2.0, o horário terá precisão de milissegundos.

HOUR

  • Sintaxe

    INT HOUR(DATETIME|TIMESTAMP|STRING <date>)
  • Descrição

    Retorna o componente de hora de um valor de data.

  • Parâmetros

    date: obrigatório. Um valor de data do tipo DATETIME, TIMESTAMP ou STRING. O valor de data deve estar no formato yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3. Se o valor for do tipo STRING, ele deve incluir pelo menos a parte yyyy-mm-dd e não deve conter strings extras. Esta função é uma função adicional do MaxCompute V2.0.

  • Valor de retorno

    Um valor do tipo INT é retornado. O valor de retorno varia conforme as seguintes regras:

    • Se o valor de date não for do tipo DATETIME, TIMESTAMP ou STRING, ou se o formato não atender aos requisitos, null será retornado.

    • Se o valor de date for null, null será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 12. 
      SELECT HOUR('2014-09-01 12:00:00');
      
      -- The return value is 12. 
      SELECT HOUR('12:00:00');
      
      -- The return value is NULL. 
      SELECT HOUR('20140901120000');
      
      -- The return value is NULL. 
      SELECT HOUR(null);
    • Exemplos com dados de tabela

      Obtenha os componentes de hora dos valores de data nas colunas datetime1 e timestamp1. Os dados em Dados de amostra são usados neste exemplo. Instruções de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT datetime1, 
             HOUR(datetime1) AS datetime1_hour, 
             timestamp1, 
             HOUR(timestamp1) AS timestamp1_hour 
        FROM mf_date_fun_t;

      O seguinte resultado é retornado.

      +---------------------+----------------+-------------------------------+-----------------+
      | datetime1           | datetime1_hour | timestamp1                    | timestamp1_hour |
      +---------------------+----------------+-------------------------------+-----------------+
      | 2021-11-29 00:01:00 | 0              | 2021-01-11 00:00:00.123456789 | 0               |
      | 2021-11-28 00:02:00 | 0              | 2021-02-11 00:00:00.123456789 | 0               |
      | 2021-11-27 00:03:00 | 0              | 2021-03-11 00:00:00.123456789 | 0               |
      | 2021-11-26 00:04:00 | 0              | 2021-04-11 00:00:00.123456789 | 0               |
      | 2021-11-25 00:05:00 | 0              | 2021-05-11 00:00:00.123456789 | 0               |
      | 2021-11-24 00:06:00 | 0              | 2021-06-11 00:00:00.123456789 | 0               |
      | 2021-11-23 00:07:00 | 0              | 2021-07-11 00:00:00.123456789 | 0               |
      | 2021-11-22 00:08:00 | 0              | 2021-08-11 00:00:00.123456789 | 0               |
      | 2021-11-21 00:09:00 | 0              | 2021-09-11 00:00:00.123456789 | 0               |
      | 2021-11-20 00:10:00 | 0              | 2021-10-11 00:00:00.123456789 | 0               |
      +---------------------+----------------+-------------------------------+-----------------+

ISDATE

  • Sintaxe

    BOOLEAN ISDATE(STRING <date>, STRING <format>)
  • Descrição

    Determina se uma string de data pode ser convertida em um valor de data em um formato especificado. Se a string de data puder ser convertida em um valor de data no formato especificado, true será retornado. Caso contrário, false será retornado.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    date

    Sim

    Um valor do tipo STRING. Se o valor de entrada for do tipo BIGINT, DOUBLE, DECIMAL ou DATETIME, o valor será convertido implicitamente para o tipo STRING antes do cálculo.

    format

    Sim

    Uma constante do tipo STRING. Este parâmetro não suporta EDTF. Se existirem strings de formato redundantes em format, esta função converterá a string de data correspondente à primeira string de formato em um valor de data. As strings restantes serão consideradas delimitadores. Por exemplo, isdate("1234-yyyy", "yyyy-yyyy") retorna true.

  • Valor de retorno

    Um valor do tipo BOOLEAN é retornado. Se o valor de date ou format for null, null será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is true. 
      SELECT ISDATE('2021-10-11','yyyy-mm-dd');
      
      -- The return value is false. 
      SET odps.sql.type.system.odps2=false;
      SELECT ISDATE(1678952314,'yyyy-mm-dd');
    • Exemplos com dados de tabela

      Determine se as strings de data na coluna date3 podem ser convertidas em valores de data em um formato especificado. Os dados em Dados de amostra são usados neste exemplo. Instrução de exemplo:

      SELECT date3, ISDATE(date3,'yyyy-mm-dd') AS date3_isdate FROM mf_date_fun_t;

      O seguinte resultado é retornado.

      +------------+--------------+
      | date3      | date3_isdate |
      +------------+--------------+
      | 2021-11-20 | true         |
      | 2021-11-21 | true         |
      | 2021-11-22 | true         |
      | 2021-11-23 | true         |
      | 2021-11-24 | true         |
      | 2021-11-25 | true         |
      | 2021-11-26 | true         |
      | 2021-11-27 | true         |
      | 2021-11-28 | true         |
      | 2021-11-29 | true         |
      +------------+--------------+

LAST_DAY

  • Sintaxe

    STRING LAST_DAY(DATE|DATETIME|TIMESTAMP|STRING <date>)
  • Descrição

    Retorna o último dia do mês em que um valor de data se encontra. Esta função é uma função adicional do MaxCompute V2.0.

  • Parâmetros

    date: obrigatório. Um valor de data do tipo DATE, DATETIME, TIMESTAMP ou STRING. Se o valor for do tipo STRING, ele deve incluir pelo menos a parte yyyy-mm-dd e não deve conter strings extras.

  • Valor de retorno

    Retorna um valor do tipo STRING no formato yyyy-mm-dd. O valor retornado segue as regras abaixo:

    • Se o valor de date não for dos tipos DATE, DATETIME, TIMESTAMP ou STRING, ou se o formato não atender aos requisitos, a função retorna null.

    • Se o valor de date for null, a função retornará um erro.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 2017-03-31. 
      SELECT LAST_DAY('2017-03-04');
      
      -- The return value is 2017-07-31. 
      SELECT LAST_DAY('2017-07-04 11:40:00');
      
      -- The return value is NULL. 
      SELECT LAST_DAY('20170304');
    • Exemplos com dados de tabela

      Obtenha o último dia do mês correspondente a cada valor de data nas colunas date1, datetime1, timestamp1 e date3. Este exemplo utiliza os dados em Dados de amostra. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true; 
      SELECT date1, 
             LAST_DAY(date1) AS date1_lastday, 
             datetime1, 
             LAST_DAY(datetime1) AS datetime1_lastday, 
             timestamp1, 
             LAST_DAY(timestamp1) AS timestamp1_lastday, 
             date3, 
             LAST_DAY(date3) AS date3_lastday 
        FROM mf_date_fun_t;

      O resultado retornado é o seguinte.

      +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+
      | date1      | date1_lastday | datetime1           | datetime1_lastday | timestamp1                    | timestamp1_lastday | date3      | date3_lastday |
      +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+
      | 2021-11-29 | 2021-11-30    | 2021-11-29 00:01:00 | 2021-11-30        | 2021-01-11 00:00:00.123456789 | 2021-01-31         | 2021-11-20 | 2021-11-30    |
      | 2021-11-28 | 2021-11-30    | 2021-11-28 00:02:00 | 2021-11-30        | 2021-02-11 00:00:00.123456789 | 2021-02-28         | 2021-11-21 | 2021-11-30    |
      | 2021-11-27 | 2021-11-30    | 2021-11-27 00:03:00 | 2021-11-30        | 2021-03-11 00:00:00.123456789 | 2021-03-31         | 2021-11-22 | 2021-11-30    |
      | 2021-11-26 | 2021-11-30    | 2021-11-26 00:04:00 | 2021-11-30        | 2021-04-11 00:00:00.123456789 | 2021-04-30         | 2021-11-23 | 2021-11-30    |
      | 2021-11-25 | 2021-11-30    | 2021-11-25 00:05:00 | 2021-11-30        | 2021-05-11 00:00:00.123456789 | 2021-05-31         | 2021-11-24 | 2021-11-30    |
      | 2021-11-24 | 2021-11-30    | 2021-11-24 00:06:00 | 2021-11-30        | 2021-06-11 00:00:00.123456789 | 2021-06-30         | 2021-11-25 | 2021-11-30    |
      | 2021-11-23 | 2021-11-30    | 2021-11-23 00:07:00 | 2021-11-30        | 2021-07-11 00:00:00.123456789 | 2021-07-31         | 2021-11-26 | 2021-11-30    |
      | 2021-11-22 | 2021-11-30    | 2021-11-22 00:08:00 | 2021-11-30        | 2021-08-11 00:00:00.123456789 | 2021-08-31         | 2021-11-27 | 2021-11-30    |
      | 2021-11-21 | 2021-11-30    | 2021-11-21 00:09:00 | 2021-11-30        | 2021-09-11 00:00:00.123456789 | 2021-09-30         | 2021-11-28 | 2021-11-30    |
      | 2021-11-20 | 2021-11-30    | 2021-11-20 00:10:00 | 2021-11-30        | 2021-10-11 00:00:00.123456789 | 2021-10-31         | 2021-11-29 | 2021-11-30    |
      +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+

LASTDAY

  • Sintaxe

    DATETIME LASTDAY(DATETIME <date>)
  • Descrição

    Retorna o último dia do mês referente a um valor de date. Apenas o componente do dia é truncado. Os componentes de hora, minuto e segundo são expressos como 00:00:00.

  • Parâmetros

    date: um valor de data do tipo DATETIME. O valor da data deve estar no formato yyyy-mm-dd hh:mi:ss. Se o valor de entrada for do tipo STRING e seu projeto utilizar a edição de tipos de dados do MaxCompute V1.0, o valor será convertido implicitamente para DATETIME antes do cálculo.

  • Valor retornado

    Retorna um valor do tipo DATETIME no formato yyyy-mm-dd hh:mi:ss. O retorno obedece às seguintes regras:

    • Caso o valor de date não seja do tipo DATETIME ou STRING, ou esteja fora do formato exigido, um erro será retornado.

    • Quando o valor de date for null, o resultado também será null.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 2013-06-30 00:00:00. 
      SELECT LASTDAY (DATETIME '2013-06-08 01:10:00');
      
      -- The return value is 2013-06-30 00:00:00. 
      SET odps.sql.type.system.odps2=false;
      SELECT LASTDAY ('2013-06-08 01:10:00');
      
      -- The return value is NULL. 
      SELECT LASTDAY (null);
    • Exemplos com dados de tabela

      Obtenha o último dia do mês para cada valor na coluna datetime1. Utilize os Dados de amostra neste exemplo. Instrução de exemplo:

      SELECT datetime1, LASTDAY(datetime1) AS datetime1_lastday FROM mf_date_fun_t;

      O resultado retornado é o seguinte.

      +---------------------+---------------------+
      | datetime1           | datetime1_lastday   |
      +---------------------+---------------------+
      | 2021-11-29 00:01:00 | 2021-11-30 00:00:00 |
      | 2021-11-28 00:02:00 | 2021-11-30 00:00:00 |
      | 2021-11-27 00:03:00 | 2021-11-30 00:00:00 |
      | 2021-11-26 00:04:00 | 2021-11-30 00:00:00 |
      | 2021-11-25 00:05:00 | 2021-11-30 00:00:00 |
      | 2021-11-24 00:06:00 | 2021-11-30 00:00:00 |
      | 2021-11-23 00:07:00 | 2021-11-30 00:00:00 |
      | 2021-11-22 00:08:00 | 2021-11-30 00:00:00 |
      | 2021-11-21 00:09:00 | 2021-11-30 00:00:00 |
      | 2021-11-20 00:10:00 | 2021-11-30 00:00:00 |
      +---------------------+---------------------+

MINUTE

  • Sintaxe

    INT MINUTE(DATETIME|TIMESTAMP|STRING <date>)
  • Descrição

    Retorna o componente de minuto de um valor de data. Esta é uma função adicional do MaxCompute V2.0.

  • Parâmetros

    date: obrigatório. Um valor de data dos tipos DATETIME, TIMESTAMP ou STRING. A data deve seguir o formato yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3.

  • Valor retornado

    Retorna um valor do tipo INT, sujeito às seguintes condições:

    • Retorna null se o valor de date não for dos tipos DATETIME, TIMESTAMP ou STRING, ou se o formato for inválido.

    • Retorna null quando o valor de date for null.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 30.  
      SELECT MINUTE('2014-09-01 12:30:00'); 
      
      -- The return value is 30. 
      SELECT MINUTE('12:30:00');
      
      -- The return value is NULL. 
      SELECT MINUTE('20140901120000');
      
      -- The return value is NULL. 
      SELECT MINUTE(null);
    • Exemplos com dados de tabela

      Extraia os componentes de minuto das datas nas colunas datetime1 e timestamp1. Consulte os Dados de amostra para este exemplo. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT datetime1, 
             MINUTE(datetime1) AS datetime1_minute, 
             timestamp1, 
             MINUTE(timestamp1) AS timestamp1_minute 
        FROM mf_date_fun_t;

      O resultado retornado é o seguinte.

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

MONTH

  • Sintaxe

    INT MONTH(DATETIME|TIMESTAMP|DATE|STRING <date>) 
  • Descrição

    Retorna o mês ao qual uma data pertence. Função adicional disponível no MaxCompute V2.0.

  • Parâmetros

    date: obrigatório. Valor de data dos tipos DATETIME, TIMESTAMP, DATE ou STRING. O formato aceito é yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Para valores STRING, é necessário incluir pelo menos a parte yyyy-mm-dd, sem caracteres extras.

  • Valor retornado

    A função retorna um valor INT conforme as regras a seguir:

    • Se date não for dos tipos DATETIME, TIMESTAMP, DATE ou STRING, ou tiver formato inadequado, retorna-se null.

    • Se date for null, o retorno será null.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 9.  
      SELECT MONTH('2014-09-01');
      
      -- The return value is NULL. 
      SELECT MONTH('20140901');
      
      -- The return value is NULL. 
      SELECT MONTH(null);
    • Exemplos com dados de tabela

      Obtenha o componente de mês para cada data nas colunas date1, datetime1, timestamp1 e date3. Use os Dados de amostra como base. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement.  
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             MONTH(date1) AS date1_month, 
             datetime1, 
             MONTH(datetime1) AS datetime1_month, 
             timestamp1, 
             MONTH(timestamp1) AS timestamp1_month, 
             date3, 
             MONTH(date3) AS date3_month 
        FROM mf_date_fun_t;

      O resultado retornado é o seguinte.

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

MONTHS_BETWEEN

  • Sintaxe

    DOUBLE MONTHS_BETWEEN(DATETIME|TIMESTAMP|DATE|STRING <date1>, DATETIME|TIMESTAMP|DATE|STRING <date2>) 
  • Descrição

    Calcula a quantidade de meses entre date1 e date2. Recurso adicional do MaxCompute V2.0.

  • Parâmetros

    date1 e date2: obrigatórios. Valores dos tipos DATETIME, TIMESTAMP, DATE ou STRING nos formatos yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3. Se forem strings, devem conter no mínimo a parte yyyy-mm-dd e não podem ter caracteres adicionais.

  • Valor retornado

    Retorna um valor DOUBLE de acordo com as seguintes regras:

    • Positivo quando date1 for posterior a date2; negativo quando date2 for posterior a date1.

    • Inteiro representando meses completos caso date1 e date2 sejam os últimos dias de seus respectivos meses. Caso contrário, aplica-se a fórmula: (date1 - date2)/31.

    • Null se date1 ou date2 for null.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 3.9495967741935485.  
      SELECT MONTHS_BETWEEN('1997-02-28 10:30:00', '1996-10-30');
      
      -- The return value is -3.9495967741935485. 
      SELECT MONTHS_BETWEEN('1996-10-30','1997-02-28 10:30:00' );
      
      -- The return value is -3.0. 
      SELECT MONTHS_BETWEEN('1996-09-30','1996-12-31');
      
      -- The return value is NULL. 
      SELECT MONTHS_BETWEEN('1996-09-30', null);
    • Exemplos com dados de tabela

      Calcule a diferença em meses entre os valores das colunas timestamp1 e timestamp2. Baseie-se nos Dados de amostra. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true; 
      SELECT timestamp1, timestamp2, MONTHS_BETWEEN(timestamp1, timestamp2) FROM mf_date_fun_t;

      O resultado retornado é o seguinte.

      +-------------------------------+-------------------------------+------------+
      | timestamp1                    | timestamp2                    | _c2        |
      +-------------------------------+-------------------------------+------------+
      | 2021-01-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -9.0       |
      | 2021-02-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -8.0       |
      | 2021-03-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -7.0       |
      | 2021-04-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -6.0       |
      | 2021-05-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -5.0       |
      | 2021-06-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -4.0       |
      | 2021-07-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -3.0       |
      | 2021-08-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -2.0       |
      | 2021-09-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | -1.0       |
      | 2021-10-11 00:00:00.123456789 | 2021-10-11 00:00:00.123456789 | 0.0        |
      +------------+------------+------------+

NEXT_DAY

  • Sintaxe

    STRING NEXT_DAY(TIMESTAMP|DATE|DATETIME|STRING <startdate>, STRING <week>)
  • Descrição

    Retorna a data do primeiro dia posterior a startdate que corresponda ao dia da semana especificado em week. Ou seja, fornece a data do dia indicado na próxima semana. Disponível como função adicional no MaxCompute V2.0.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    startdate

    Sim

    Valor de data dos tipos DATE, DATETIME, TIMESTAMP ou STRING. Formatos aceitos: yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3. Valores STRING precisam conter ao menos yyyy-mm-dd e não admitir textos extras.

    week

    Sim

    Valor STRING indicando o dia da semana. Aceita as duas ou três primeiras letras ou o nome completo do dia, como MO, TUE ou FRIDAY.

  • Valor retornado

    Retorna uma STRING no formato yyyy-mm-dd, observando as condições abaixo:

    • Retorna null se date não for TIMESTAMP, DATE, DATETIME ou STRING, ou estiver em formato inválido.

    • Gera erro quando date for null.

    • Retorna null caso week seja null.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 2017-08-08.  
      SELECT NEXT_DAY('2017-08-01','TU');
      
      -- The return value is 2017-08-08. 
      SELECT NEXT_DAY('2017-08-01 23:34:00', 'TU');
      
      -- The return value is NULL. 
      SELECT NEXT_DAY('20170801','TU');
      
      -- The return value is NULL. 
      SELECT NEXT_DAY('2017-08-01 23:34:00', null);
    • Exemplos com dados de tabela

      Determine a data do dia da semana seguinte correspondente a cada valor nas colunas date1, datetime1, timestamp1 e date3. Utilize os Dados de amostra. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement.  
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             NEXT_DAY(date1,'MON') AS date1_next_day, 
             datetime1, 
             NEXT_DAY(datetime1,'TUE') AS datetime1_next_day, 
             timestamp1, 
             NEXT_DAY(timestamp1,'WED') AS timestamp1_next_day, 
             date3, 
             NEXT_DAY(date3,'THU') AS date3_next_day 
        FROM mf_date_fun_t;

      O resultado retornado é o seguinte.

      +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+------------+----------------+
      | date1      | date1_next_day | datetime1           | datetime1_next_day | timestamp1                    | timestamp1_next_day | date3      | date3_next_day |
      +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+------------+----------------+
      | 2021-11-29 | 2021-12-06     | 2021-11-29 00:01:00 | 2021-11-30         | 2021-01-11 00:00:00.123456789 | 2021-01-13          | 2021-11-20 | 2021-11-25     |
      | 2021-11-28 | 2021-11-29     | 2021-11-28 00:02:00 | 2021-11-30         | 2021-02-11 00:00:00.123456789 | 2021-02-17          | 2021-11-21 | 2021-11-25     |
      | 2021-11-27 | 2021-11-29     | 2021-11-27 00:03:00 | 2021-11-30         | 2021-03-11 00:00:00.123456789 | 2021-03-17          | 2021-11-22 | 2021-11-25     |
      | 2021-11-26 | 2021-11-29     | 2021-11-26 00:04:00 | 2021-11-30         | 2021-04-11 00:00:00.123456789 | 2021-04-14          | 2021-11-23 | 2021-11-25     |
      | 2021-11-25 | 2021-11-29     | 2021-11-25 00:05:00 | 2021-11-30         | 2021-05-11 00:00:00.123456789 | 2021-05-12          | 2021-11-24 | 2021-11-25     |
      | 2021-11-24 | 2021-11-29     | 2021-11-24 00:06:00 | 2021-11-30         | 2021-06-11 00:00:00.123456789 | 2021-06-16          | 2021-11-25 | 2021-12-02     |
      | 2021-11-23 | 2021-11-29     | 2021-11-23 00:07:00 | 2021-11-30         | 2021-07-11 00:00:00.123456789 | 2021-07-14          | 2021-11-26 | 2021-12-02     |
      | 2021-11-22 | 2021-11-29     | 2021-11-22 00:08:00 | 2021-11-23         | 2021-08-11 00:00:00.123456789 | 2021-08-18          | 2021-11-27 | 2021-12-02     |
      | 2021-11-21 | 2021-11-22     | 2021-11-21 00:09:00 | 2021-11-23         | 2021-09-11 00:00:00.123456789 | 2021-09-15          | 2021-11-28 | 2021-12-02     |
      | 2021-11-20 | 2021-11-22     | 2021-11-20 00:10:00 | 2021-11-23         | 2021-10-11 00:00:00.123456789 | 2021-10-13          | 2021-11-29 | 2021-12-02     |
      +------------+----------------+---------------------+--------------------+-------------------------------+---------------------+------------+----------------+

NOW

  • Sintaxe

    DATETIME NOW()
  • Descrição

    Retorna a data e a hora atuais do sistema.

  • Valor retornado

    Retorna um valor DATETIME no formato yyyy-mm-dd hh:mi:ss.SSS.

  • Exemplos

    • Sem especificação de formato. A parte dos milissegundos no valor retornado pode conter 1, 2 ou 3 dígitos.

      SELECT NOW(); 

      O resultado retornado é o seguinte.

      +------+
      | _c0  |
      +------+
      | 2023-06-13 10:53:24.967 |
      +------+
    • Com formato de hora especificado.

      SELECT  DATE_FORMAT(NOW(),'yyyy-MM-dd hh:mi:ss.SSS'); 

      O resultado retornado é o seguinte.

      +-----+
      | _c0 |
      +-----+
      | 2023-06-13 10:53:53.899 |
      +-----+

QUARTER

  • Sintaxe

    INT QUARTER(DATETIME|TIMESTAMP|DATE|STRING <date>) 
  • Descrição

    Retorna o trimestre correspondente a uma data. Valores válidos: 1 a 4. Função adicional do MaxCompute V2.0.

  • Parâmetros

    date: obrigatório. Data dos tipos DATETIME, TIMESTAMP, DATE ou STRING. Deve estar no formato yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Strings devem incluir minimamente yyyy-mm-dd e não permitir caracteres adicionais.

  • Valor retornado

    Retorna um inteiro (INT) seguindo estas regras:

    • Null se date não for DATETIME, TIMESTAMP, DATE ou STRING, ou apresentar formato incorreto.

    • Null quando date for null.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 4.  
      SELECT QUARTER('1970-11-12 10:00:00');
      
      -- The return value is 4. 
      SELECT QUARTER('1970-11-12');
      
      -- The return value is NULL. 
      SELECT QUARTER(null);
    • Exemplos com dados de tabela

      Identifique o trimestre de cada data nas colunas date1, datetime1, timestamp1 e date3. Consulte os Dados de amostra. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement.  
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             QUARTER(date1) AS date1_quarter, 
             datetime1, 
             QUARTER(datetime1) AS datetime1_quarter, 
             timestamp1, 
             QUARTER(timestamp1) AS timestamp1_quarter, 
             date3, 
             QUARTER(date3) AS date3_quarter 
        FROM mf_date_fun_t;

      O resultado retornado é o seguinte.

      +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+
      | date1      | date1_quarter | datetime1           | datetime1_quarter | timestamp1                    | timestamp1_quarter | date3      | date3_quarter |
      +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+
      | 2021-11-29 | 4             | 2021-11-29 00:01:00 | 4                 | 2021-01-11 00:00:00.123456789 | 1                  | 2021-11-20 | 4             |
      | 2021-11-28 | 4             | 2021-11-28 00:02:00 | 4                 | 2021-02-11 00:00:00.123456789 | 1                  | 2021-11-21 | 4             |
      | 2021-11-27 | 4             | 2021-11-27 00:03:00 | 4                 | 2021-03-11 00:00:00.123456789 | 1                  | 2021-11-22 | 4             |
      | 2021-11-26 | 4             | 2021-11-26 00:04:00 | 4                 | 2021-04-11 00:00:00.123456789 | 2                  | 2021-11-23 | 4             |
      | 2021-11-25 | 4             | 2021-11-25 00:05:00 | 4                 | 2021-05-11 00:00:00.123456789 | 2                  | 2021-11-24 | 4             |
      | 2021-11-24 | 4             | 2021-11-24 00:06:00 | 4                 | 2021-06-11 00:00:00.123456789 | 2                  | 2021-11-25 | 4             |
      | 2021-11-23 | 4             | 2021-11-23 00:07:00 | 4                 | 2021-07-11 00:00:00.123456789 | 3                  | 2021-11-26 | 4             |
      | 2021-11-22 | 4             | 2021-11-22 00:08:00 | 4                 | 2021-08-11 00:00:00.123456789 | 3                  | 2021-11-27 | 4             |
      | 2021-11-21 | 4             | 2021-11-21 00:09:00 | 4                 | 2021-09-11 00:00:00.123456789 | 3                  | 2021-11-28 | 4             |
      | 2021-11-20 | 4             | 2021-11-20 00:10:00 | 4                 | 2021-10-11 00:00:00.123456789 | 4                  | 2021-11-29 | 4             |
      +------------+---------------+---------------------+-------------------+-------------------------------+--------------------+------------+---------------+

SECOND

  • Sintaxe

    INT SECOND(DATETIME|TIMESTAMP|STRING <date>)
  • Descrição

    Extrai o componente de segundos de uma data. Recurso adicional do MaxCompute V2.0.

  • Parâmetros

    date: obrigatório. Data dos tipos DATETIME, TIMESTAMP ou STRING, formatada como yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3.

  • Valor retornado

    Retorna um valor INT conforme as condições:

    • Null se date não for DATETIME, TIMESTAMP ou STRING, ou tiver formato incompatível.

    • Null caso date seja null.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 45.  
      SELECT SECOND('2014-09-01 12:30:45');
      
      -- The return value is 45. 
      SELECT SECOND('12:30:45');
      
      -- The return value is NULL. 
      SELECT SECOND('20140901123045');
      
      -- The return value is NULL. 
      SELECT SECOND(null);
    • Exemplos com dados de tabela

      Obtenha os segundos das datas nas colunas datetime1 e timestamp1. Utilize os Dados de amostra. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement.  
      SET odps.sql.type.system.odps2=true;
      SELECT datetime1, 
             SECOND(datetime1) AS datetime1_second, 
             timestamp1, 
             SECOND(timestamp1) AS timestamp1_second 
        FROM mf_date_fun_t;

      O resultado retornado é o seguinte.

      +---------------------+------------------+-------------------------------+-------------------+
      | datetime1           | datetime1_second | timestamp1                    | timestamp1_second |
      +---------------------+------------------+-------------------------------+-------------------+
      | 2021-11-29 00:01:00 | 0                | 2021-01-11 00:00:00.123456789 | 0                 |
      | 2021-11-28 00:02:00 | 0                | 2021-02-11 00:00:00.123456789 | 0                 |
      | 2021-11-27 00:03:00 | 0                | 2021-03-11 00:00:00.123456789 | 0                 |
      | 2021-11-26 00:04:00 | 0                | 2021-04-11 00:00:00.123456789 | 0                 |
      | 2021-11-25 00:05:00 | 0                | 2021-05-11 00:00:00.123456789 | 0                 |
      | 2021-11-24 00:06:00 | 0                | 2021-06-11 00:00:00.123456789 | 0                 |
      | 2021-11-23 00:07:00 | 0                | 2021-07-11 00:00:00.123456789 | 0                 |
      | 2021-11-22 00:08:00 | 0                | 2021-08-11 00:00:00.123456789 | 0                 |
      | 2021-11-21 00:09:00 | 0                | 2021-09-11 00:00:00.123456789 | 0                 |
      | 2021-11-20 00:10:00 | 0                | 2021-10-11 00:00:00.123456789 | 0                 |
      +---------------------+------------------+-------------------------------+-------------------+

TO_CHAR

  • Sintaxe

    STRING TO_CHAR(DATETIME <date>, STRING <format>) 
  • Descrição

    Converte um valor date do tipo DATETIME em uma string conforme o format definido.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    date

    Sim

    Valor de data do tipo DATETIME no formato yyyy-mm-dd hh:mi:ss. Se a entrada for STRING e o projeto usar a edição de tipos de dados do MaxCompute V1.0, ocorre conversão implícita para DATETIME antes do cálculo.

    format

    Sim

    Constante STRING. No valor de format, a parte referente ao formato de data é substituída pelos dados correspondentes, enquanto os demais caracteres permanecem inalterados na saída.

  • Valor retornado

    Um valor do tipo STRING é retornado. O valor de retorno varia conforme as seguintes regras:

    • Se o valor de date não for do tipo DATETIME ou STRING, um erro será retornado.

    • Se o valor de date for nulo, um erro será retornado.

    • Se o valor de format for nulo, null será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      • Exemplo 1

        --If the MaxCompute client runs in Windows, Chinese characters may not be properly displayed in the returned result. 
        SELECT TO_CHAR(DATETIME '2010-12-03 00:00:00','Alibaba Finance yyyy-mm*dd');

        O seguinte resultado é retornado.

        +------------+
        | _c0        |
        +------------+
        | Alibaba Finance 2010-12*03 |
        +------------+
      • Exemplo 2

        SELECT TO_CHAR(DATETIME '2008-07-18 00:00:00','yyyymmdd'); 

        O seguinte resultado é retornado.

        +------------+
        | _c0        |
        +------------+
        | 20080718   |
        +------------+
      • Exemplo 3

        SET odps.sql.type.system.odps2=false; 
        SELECT TO_CHAR('2008-07-18 00:00:00', 'yyyymmdd');

        O seguinte resultado é retornado.

        +------------+
        | _c0        |
        +------------+
        | 20080718   |
        +------------+
      • Exemplo 4

        -- 'Alibaba 2010-12*3' cannot be converted into a standard date value, and an error is returned.  
        SELECT TO_CHAR(DATETIME 'Alibaba 2010-12*3', 'Alibaba yyyy-mm*dd');
      • Exemplo 5

        --'20102401' is not a standard date value, and an error is returned.  
        SELECT TO_CHAR(DATETIME '20102401', 'yyyy');
      • Exemplo 6

        SELECT TO_CHAR(DATETIME '2010-12-03 00:00:00', null); 

        O seguinte resultado é retornado.

        +------------+
        | _c0        |
        +------------+
        | NULL       |
        +------------+
    • Exemplos com dados de tabela

      Converta valores de data na coluna datetime1 em strings no formato especificado. Este exemplo utiliza os dados em Dados de amostra. Instrução de exemplo:

      SELECT  datetime1, TO_CHAR(datetime1,'yyyy-mm-dd') AS datetime1_to_char
      FROM mf_date_fun_t; 

      O seguinte resultado é retornado.

      +---------------------+-------------------+
      | datetime1           | datetime1_to_char |
      +---------------------+-------------------+
      | 2021-11-29 00:01:00 | 2021-11-29        |
      | 2021-11-28 00:02:00 | 2021-11-28        |
      | 2021-11-27 00:03:00 | 2021-11-27        |
      | 2021-11-26 00:04:00 | 2021-11-26        |
      | 2021-11-25 00:05:00 | 2021-11-25        |
      | 2021-11-24 00:06:00 | 2021-11-24        |
      | 2021-11-23 00:07:00 | 2021-11-23        |
      | 2021-11-22 00:08:00 | 2021-11-22        |
      | 2021-11-21 00:09:00 | 2021-11-21        |
      | 2021-11-20 00:10:00 | 2021-11-20        |
      +---------------------+-------------------+

TO_DATE

  • Sintaxe

    DATETIME|DATE TO_DATE(STRING <date>[, STRING <format>])
  • Descrição

    Converte uma string em um valor de date no format especificado.

  • Parâmetros

    Parameter

    Required

    Description

    date

    Yes

    Um valor de data do tipo STRING. Este parâmetro especifica a string de data que você deseja converter. Se o valor de entrada for dos tipos de dados BIGINT, DOUBLE, DECIMAL ou DATETIME, ele será convertido implicitamente para o tipo STRING antes do cálculo. A string de data também pode estar no formato ISO 8601.

    format

    No

    • Uma constante do tipo STRING. Este parâmetro especifica o formato da data. format não oferece suporte a EDTF. Outros caracteres são ignorados como inválidos durante a análise.

    • O valor deve conter yyyy. Caso contrário, NULL será retornado. Se existirem strings de formato redundantes em format, esta função converte a string de data correspondente à primeira string de formato em um valor de data. As strings restantes são consideradas delimitadores. Por exemplo, TO_DATE("1234-2234", "yyyy-yyyy") retorna 1234-01-01 00:00:00.

    • yyyy indica um ano de 4 dígitos. mm indica um mês de 2 dígitos. dd indica um dia de 2 dígitos. hh indica uma hora baseada no relógio de 24 horas. mi indica minutos de 2 dígitos. ss indica segundos de 2 dígitos. ff3 indica milissegundos de 3 dígitos.

  • Valor de retorno

    Um valor do tipo DATE ou DATETIME é retornado.

    • Se o parâmetro format não estiver incluído nos parâmetros de entrada e a string a ser convertida estiver no formato yyyy-mm-dd ou yyyy-mm-dd hh:mi:ss, um valor do tipo DATE no formato yyyy-mm-dd será retornado. Se o parâmetro format não estiver incluído nos parâmetros de entrada e a string a ser convertida não estiver no formato yyyy-mm-dd ou yyyy-mm-dd hh:mi:ss, null será retornado.

    • Se o parâmetro format estiver incluído nos parâmetros de entrada, um valor do tipo DATETIME no formato yyyy-mm-dd hh:mi:ss será retornado. Se o valor de date ou format for nulo, null será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 2010-12-03 00:00:00.  
      SELECT TO_DATE('Alibaba 2010-12*03', 'Alibaba yyyy-mm*dd');
      
      -- The return value is 2008-07-18 00:00:00. 
      SELECT TO_DATE('20080718', 'yyyymmdd');
      
      -- The return value is 2008-07-18 20:30:00. 
      SELECT TO_DATE('200807182030','yyyymmddhhmi');
      
      -- '2008718' cannot be converted to a standard date value, and an error is returned. The value must be written as '20080718'. 
      SELECT TO_DATE('2008718', 'yyyymmdd');
      
      -- 'Alibaba 2010-12*3' cannot be converted into a standard date value, and an error is returned. The value must be written as 'Alibaba 2010-12*03'. 
      SELECT TO_DATE('Alibaba 2010-12*3', 'Alibaba yyyy-mm*dd');
      
      -- '2010-24-01' cannot be converted into a standard date value, and an error is returned. The value must be written as '2010-01-24'. 
      SELECT TO_DATE('2010-24-01', 'yyyy-mm-dd');
      
      -- The return value is 2018-10-30 15:13:12. 
      SELECT TO_DATE('20181030 15-13-12.345','yyyymmdd hh-mi-ss.ff3');
      
      -- The return value is NULL. 
      SELECT TO_DATE(null,'yyyymmdd hh-mi-ss.ff3');
      
      -- The return value is NULL. 
      SELECT TO_DATE('20181030 15-13-12.345', null);
      
      -- If the input value is in the ISO 8601 format, the return value is 2021-09-24 13:39:34. 
      SELECT TO_DATE('2021-09-24T13:39:34.119Z', 'yyyy-MM-ddThh:mi:ss.ff3Z');
      
      -- The return value is 2021-09-24, and the data type is DATE. 
      SELECT TO_DATE('2021-09-24');
      
      -- The return value is 2021-09-24, and the data type is DATE. 
      SELECT TO_DATE('2021-09-24 13:39:34');
      
      -- The return value is NULL. 
      SELECT TO_DATE('20210924');
    • Exemplos com dados de tabela

      Converta valores de data na coluna date3 em valores de data no formato especificado. Este exemplo utiliza os dados em Dados de amostra. Instrução de exemplo:

      SELECT date3, TO_DATE(date3, 'yyyy-mm-dd') AS date3_to_date FROM mf_date_fun_t; 

      O seguinte resultado é retornado.

      +------------+---------------------+
      | date3      | date3_to_date       |
      +------------+---------------------+
      | 2021-11-20 | 2021-11-20 00:00:00 |
      | 2021-11-21 | 2021-11-21 00:00:00 |
      | 2021-11-22 | 2021-11-22 00:00:00 |
      | 2021-11-23 | 2021-11-23 00:00:00 |
      | 2021-11-24 | 2021-11-24 00:00:00 |
      | 2021-11-25 | 2021-11-25 00:00:00 |
      | 2021-11-26 | 2021-11-26 00:00:00 |
      | 2021-11-27 | 2021-11-27 00:00:00 |
      | 2021-11-28 | 2021-11-28 00:00:00 |
      | 2021-11-29 | 2021-11-29 00:00:00 |
      +------------+---------------------+

TO_MILLIS

  • Sintaxe

    BIGINT TO_MILLIS(DATETIME|TIMESTAMP <date>);
  • Descrição

    Converte um valor de date em um timestamp UNIX com precisão de milissegundos. Esta é uma função adicional do MaxCompute V2.0.

  • Parâmetros

    date: obrigatório. Um valor de data do tipo DATETIME ou TIMESTAMP. O valor da data deve estar no formato yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3.

  • Valor de retorno

    Um valor do tipo BIGINT é retornado. O valor de retorno varia conforme as seguintes regras:

    • Se o valor de date não for do tipo DATETIME ou TIMESTAMP, um erro será retornado.

    • Se o valor de date for nulo, um erro será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 1617174900000.  
      SELECT TO_MILLIS(datetime '2021-03-31 15:15:00');
      
      -- The return value is 1617174900000. 
      SET odps.sql.type.system.odps2=true;
      SELECT TO_MILLIS(timestamp '2021-03-31 15:15:00');
    • Exemplos com dados de tabela

      Converta valores de data nas colunas datetime1 e timestamp1 em timestamps UNIX com precisão de milissegundos. Este exemplo utiliza os dados em Dados de amostra. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true; 
      SELECT datetime1, 
             TO_MILLIS(datetime1) AS datetime1_to_millis, 
             timestamp1, 
             TO_MILLIS(timestamp1) AS timestamp1_to_millis 
        FROM mf_date_fun_t;

      O seguinte resultado é retornado.

      +---------------------+---------------------+-------------------------------+----------------------+
      | datetime1           | datetime1_to_millis | timestamp1                    | timestamp1_to_millis |
      +---------------------+---------------------+-------------------------------+----------------------+
      | 2021-11-29 00:01:00 | 1638115260000       | 2021-01-11 00:00:00.123456789 | 1610294400123        |
      | 2021-11-28 00:02:00 | 1638028920000       | 2021-02-11 00:00:00.123456789 | 1612972800123        |
      | 2021-11-27 00:03:00 | 1637942580000       | 2021-03-11 00:00:00.123456789 | 1615392000123        |
      | 2021-11-26 00:04:00 | 1637856240000       | 2021-04-11 00:00:00.123456789 | 1618070400123        |
      | 2021-11-25 00:05:00 | 1637769900000       | 2021-05-11 00:00:00.123456789 | 1620662400123        |
      | 2021-11-24 00:06:00 | 1637683560000       | 2021-06-11 00:00:00.123456789 | 1623340800123        |
      | 2021-11-23 00:07:00 | 1637597220000       | 2021-07-11 00:00:00.123456789 | 1625932800123        |
      | 2021-11-22 00:08:00 | 1637510880000       | 2021-08-11 00:00:00.123456789 | 1628611200123        |
      | 2021-11-21 00:09:00 | 1637424540000       | 2021-09-11 00:00:00.123456789 | 1631289600123        |
      | 2021-11-20 00:10:00 | 1637338200000       | 2021-10-11 00:00:00.123456789 | 1633881600123        |
      +---------------------+---------------------+-------------------------------+----------------------+

TRUNC_TIME

  • Formato do comando

    string TRUNC_TIME(date|datetime|timestamp|timestamp_ntz <date>, string <datepart>)
  • Descrição

    Trunca dados do tipo data ou hora conforme a unidade de tempo especificada por datepart e retorna um dado do tipo STRING.

  • Parâmetros

    • date: Obrigatório. Suporta os tipos DATE, DATETIME, TIMESTAMP ou TIMESTAMP_NTZ. Se a entrada for do tipo STRING e a versão do tipo de dados do projeto MaxCompute for 1.0, ela será convertida implicitamente para o tipo DATETIME antes do cálculo.

    • datepart: Obrigatório. Constante do tipo STRING, sem distinção entre maiúsculas e minúsculas, com suporte para year, month, day e hour.

  • Valor de retorno

    Retorna o tipo STRING.

    O formato STRING é o seguinte:

    • Quando datepart é 'year': Retorna o formato STRING yyyy.

    • Quando datepart é 'month': Retorna o formato STRING yyyy-mm.

    • Quando datepart é 'day': Retorna o formato STRING yyyy-mm-dd.

    • Quando datepart é 'hour': Retorna o formato STRING yyyy-mm-dd hh:mm:ss.

    Regras de retorno:

    • Quando date não for do tipo DATE, DATETIME, TIMESTAMP ou TIMESTAMP_NTZ, um erro será retornado. O tipo STRING para date só é suportado quando a versão do tipo de dados do projeto MaxCompute é 1.0.

    • Quando datepart for NULL, um erro será retornado.

  • Exemplos

    • Hora como tipo DATETIME

      Por exemplo, quando o fuso horário da Sessão ou Projeto atual é UTC+8 e a hora local é datetime '2025-06-03 07:15:08', a função TRUNC_TIME primeiro converte a hora local para a hora UTC '2025-06-02 23:15:08', depois trunca conforme datepart e retorna o resultado como tipo STRING.

      SET odps.sql.timezone=Asia/Shanghai;
      SELECT 
             TRUNC_TIME(datetime '2025-06-03 07:15:08','year') as tc_year,
             TRUNC_TIME(datetime '2025-06-03 07:15:08','month') as tc_month,
             TRUNC_TIME(datetime '2025-06-03 07:15:08','day') as tc_date,
             TRUNC_TIME(datetime '2025-06-03 07:15:08','hour') as tc_hour;

      O seguinte resultado é retornado.

      +------------+------------+------------+------------+
      | tc_year    | tc_month   | tc_date    | tc_hour    |
      +------------+------------+------------+------------+
      | 2025       | 2025-06    | 2025-06-02 | 2025-06-02 23:00:00 |
      +------------+------------+------------+------------+
    • Hora como tipo DATE

      Por exemplo, se a hora de entrada for date '2025-06-10', a função TRUNC_TIME trunca os dados do tipo DATE conforme a unidade de tempo especificada por datepart e retorna o tipo STRING.

      SELECT 
             TRUNC_TIME(date '2025-06-10','year' ),
             TRUNC_TIME(date '2025-06-10','month' ),
             TRUNC_TIME(date '2025-06-10','day' );

      O seguinte resultado é retornado.

      +------------+------------+------------+
      | _c0        | _c1        | _c2        |
      +------------+------------+------------+
      | 2025       | 2025-06    | 2025-06-10 |
      +------------+------------+------------+
    • Hora como tipo STRING

      Por exemplo, se a hora de entrada for do tipo STRING '2025-06-03 15:30:30'. Você deve definir a versão do tipo de dados do projeto MaxCompute como 1.0 para que ela seja convertida implicitamente para o tipo DATETIME antes do cálculo. Caso contrário, um erro será retornado.

      SET odps.sql.type.system.odps2=false;
      SELECT TRUNC_TIME('2025-06-03 15:30:30','hour');

      O seguinte resultado é retornado.

      +------------+
      | _c0        |
      +------------+
      | 2025-06-03 07:00:00 |
      +------------+

UNIX_TIMESTAMP

  • Sintaxe

    BIGINT UNIX_TIMESTAMP(DATETIME|DATE|TIMESTAMP|STRING <date>) 
  • Descrição

    Converte um valor de date em um timestamp UNIX que é um número inteiro.

  • Parâmetros

    date: obrigatório. Um valor de data dos tipos DATETIME, DATE, TIMESTAMP ou STRING. O valor de entrada deve estar no formato yyyy-mm-dd hh:mi:ss, yyyy-mm-dd ou yyyy-mm-dd hh:mi:ss.ff3. Se o valor de entrada for do tipo STRING e a edição de tipo de dados MaxCompute V1.0 for usada em seu projeto, o valor de entrada será convertido implicitamente em um valor do tipo DATETIME antes do cálculo. Para obter mais informações sobre a edição de tipo de dados MaxCompute V1.0, consulte Versão do tipo de dados 1.0. Se você ativar a edição de tipo de dados MaxCompute V2.0, a conversão implícita falhará. Nesse caso, use a função CAST, como unix_timestamp(cast(... as datetime)), para converter os tipos de dados. Você também pode desativar a edição de tipo de dados MaxCompute V2.0. Para obter mais informações sobre a edição de tipo de dados MaxCompute V2.0, consulte Versão do tipo de dados 2.0.

    Nota

    Se o valor de entrada for uma constante e não um valor na tabela, ele deverá estar no formato DATETIME'yyyy-mm-dd hh:mi:ss', DATE'yyyy-mm-dd' ou TIMESTAMP'yyyy-mm-dd hh:mi:ss.ff3'. Se o valor de entrada não contiver a palavra-chave do tipo de dados e estiver no formato 'yyyy-mm-dd hh:mi:ss', ele será reconhecido como um valor do tipo STRING.

  • Valor de retorno

    Um timestamp UNIX do tipo BIGINT é retornado. O valor de retorno varia conforme as seguintes regras:

    • Se o valor de date não for dos tipos DATETIME, DATE, TIMESTAMP ou STRING, ou se o formato não atender aos requisitos, um erro ou null será retornado.

    • Se o valor de date for nulo, null será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 1699585860. 
      SELECT UNIX_TIMESTAMP(DATETIME'2023-11-10 11:11:00'); 
       
      -- The return value is 1699545600.
      SET odps.sql.type.system.odps2=true;
      SELECT UNIX_TIMESTAMP(DATE'2023-11-10');
      
      -- The return value is 1699585860.
      SET odps.sql.type.system.odps2=true;
      SELECT UNIX_TIMESTAMP(TIMESTAMP'2023-11-10 11:11:00.123456789');
      
      -- The return value is 1237518660. 
      SET odps.sql.type.system.odps2=false;
      SELECT UNIX_TIMESTAMP('2009-03-20 11:11:00'); 
      
      -- The return value is NULL. 
      SELECT UNIX_TIMESTAMP(null);
    • Exemplos com dados de tabela

      Converta valores de data nas colunas date1, datetime1 e timestamp1 em timestamps UNIX que são números inteiros. Este exemplo utiliza os dados em Dados de amostra. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement.  
      SET odps.sql.type.system.odps2=true;
      SELECT date1, 
             UNIX_TIMESTAMP(date1) AS date1_unix_timestamp, 
             datetime1, 
             UNIX_TIMESTAMP(datetime1) AS datetime1_unix_timestamp, 
             timestamp1, 
             UNIX_TIMESTAMP(timestamp1) AS timestamp1_unix_timestamp 
        FROM mf_date_fun_t;

      O seguinte resultado é retornado.

      +------------+----------------------+---------------------+--------------------------+------------------------------+---------------------------+
      | date1      | date1_unix_timestamp | datetime1           | datetime1_unix_timestamp | timestamp1                   | timestamp1_unix_timestamp |
      +------------+----------------------+---------------------+--------------------------+------------------------------+---------------------------+
      | 2021-11-29 | 1638115200           | 2021-11-29 00:01:00 | 1638115260               | 2021-01-11 00:00:00.123456789 | 1610294400                |
      | 2021-11-28 | 1638028800           | 2021-11-28 00:02:00 | 1638028920               | 2021-02-11 00:00:00.123456789 | 1612972800                |
      | 2021-11-27 | 1637942400           | 2021-11-27 00:03:00 | 1637942580               | 2021-03-11 00:00:00.123456789 | 1615392000                |
      | 2021-11-26 | 1637856000           | 2021-11-26 00:04:00 | 1637856240               | 2021-04-11 00:00:00.123456789 | 1618070400                |
      | 2021-11-25 | 1637769600           | 2021-11-25 00:05:00 | 1637769900               | 2021-05-11 00:00:00.123456789 | 1620662400                |
      | 2021-11-24 | 1637683200           | 2021-11-24 00:06:00 | 1637683560               | 2021-06-11 00:00:00.123456789 | 1623340800                |
      | 2021-11-23 | 1637596800           | 2021-11-23 00:07:00 | 1637597220               | 2021-07-11 00:00:00.123456789 | 1625932800                |
      | 2021-11-22 | 1637510400           | 2021-11-22 00:08:00 | 1637510880               | 2021-08-11 00:00:00.123456789 | 1628611200                |
      | 2021-11-21 | 1637424000           | 2021-11-21 00:09:00 | 1637424540               | 2021-09-11 00:00:00.123456789 | 1631289600                |
      | 2021-11-20 | 1637337600           | 2021-11-20 00:10:00 | 1637338200               | 2021-10-11 00:00:00.123456789 | 1633881600                |
      +------------+----------------------+---------------------+--------------------------+------------------------------+---------------------------+

WEEKDAY

  • Sintaxe

    BIGINT WEEKDAY(DATETIME <date>)
  • Descrição

    Retorna um número que representa o dia da semana em que um valor de date se encontra.

  • Parâmetros

    date: obrigatório. Um valor do tipo DATETIME. O valor da data deve estar no formato yyyy-mm-dd hh:mi:ss. Se o valor de entrada for do tipo STRING e a edição de tipo de dados MaxCompute V1.0 for usada em seu projeto, o valor de entrada será convertido implicitamente para o tipo DATETIME antes do cálculo.

  • Valor de retorno

    Um valor do tipo BIGINT é retornado. O valor de retorno varia conforme as seguintes regras:

    • Segunda-feira é considerada o primeiro dia da semana e seu valor de retorno é 0. Os dias da semana são numerados em ordem crescente começando do 0. O valor de retorno para domingo é 6.

    • Se o valor de date não for do tipo DATETIME ou STRING, ou se o formato não atender aos requisitos, um erro será retornado.

    • Se o valor de date for nulo, null será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 4. 
      SELECT WEEKDAY(datetime '2009-03-20 11:11:00'); 
      
      -- The return value is 4. 
      SET odps.sql.type.system.odps2=false;
      SELECT WEEKDAY('2009-03-20 11:11:00');
      
      -- The return value is NULL. 
      SELECT WEEKDAY(null);
    • Exemplos com dados de tabela

      Calcule o dia da semana em que cada valor de data na coluna datetime1 se encontra. Este exemplo utiliza os dados em Dados de amostra. Instrução de exemplo:

      SELECT datetime1, WEEKDAY(datetime1) AS datetime1_weekday FROM mf_date_fun_t; 

      O seguinte resultado é retornado.

      +---------------------+-------------------+
      | datetime1           | datetime1_weekday |
      +---------------------+-------------------+
      | 2021-11-29 00:01:00 | 0                 |
      | 2021-11-28 00:02:00 | 6                 |
      | 2021-11-27 00:03:00 | 5                 |
      | 2021-11-26 00:04:00 | 4                 |
      | 2021-11-25 00:05:00 | 3                 |
      | 2021-11-24 00:06:00 | 2                 |
      | 2021-11-23 00:07:00 | 1                 |
      | 2021-11-22 00:08:00 | 0                 |
      | 2021-11-21 00:09:00 | 6                 |
      | 2021-11-20 00:10:00 | 5                 |
      +---------------------+-------------------+

WEEKOFYEAR

  • Sintaxe

    BIGINT WEEKOFYEAR(DATETIME <date>)
  • Descrição

    Retorna um número que representa a semana do ano em que um valor de data se encontra. Segunda-feira é considerada o primeiro dia da semana.

    Nota

    Para determinar se uma semana pertence ao ano atual ou ao próximo ano, encontre o ano em que mais de quatro dias da semana se encontram. Se a semana pertencer ao ano atual, ela será considerada a última semana do ano. Se a semana pertencer ao próximo ano, ela será considerada a primeira semana do próximo ano.

  • Parâmetros

    date: obrigatório. Um valor do tipo DATETIME. O valor da data deve estar no formato yyyy-mm-dd hh:mi:ss. Se o valor de entrada for do tipo STRING e a edição de tipo de dados MaxCompute V1.0 for usada em seu projeto, o valor de entrada será convertido implicitamente para o tipo DATETIME antes do cálculo.

  • Valor de retorno

    Um valor do tipo BIGINT é retornado. O valor de retorno varia conforme as seguintes regras:

    • Se o valor de date não for do tipo DATETIME ou STRING, ou se o formato não atender aos requisitos, null será retornado.

    • Se o valor de date for nulo, null será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      -- The value 1 is returned. 20141229 is in year 2014, but most days of the week fall in year 2015. Therefore, the return value 1 indicates the first week of year 2015.  
      SELECT WEEKOFYEAR(TO_DATE("20141229", "yyyymmdd"));  
      
      -- The return value is 1.     
      SELECT WEEKOFYEAR(TO_DATE("20141231", "yyyymmdd")); 
      
      -- The return value is 53.  
      SELECT WEEKOFYEAR(TO_DATE("20151229", "yyyymmdd"));
      
      -- The return value is 48. 
      SET odps.sql.type.system.odps2=false;
      SELECT WEEKOFYEAR('2021-11-29 00:01:00');
      
      -- The return value is NULL. 
      SELECT WEEKOFYEAR('20141231');
      
      -- The return value is NULL. 
      SELECT WEEKOFYEAR(null);
    • Exemplos com dados de tabela

      Calcule a enésima semana do ano em que cada data na coluna datetime1 se encontra. Este exemplo utiliza os dados em Dados de amostra. Instrução de exemplo:

      SELECT datetime1, WEEKOFYEAR(datetime1) AS datetime1_weekofyear FROM mf_date_fun_t; 

      O seguinte resultado é retornado.

      +---------------------+----------------------+
      | datetime1           | datetime1_weekofyear |
      +---------------------+----------------------+
      | 2021-11-29 00:01:00 | 48                   |
      | 2021-11-28 00:02:00 | 47                   |
      | 2021-11-27 00:03:00 | 47                   |
      | 2021-11-26 00:04:00 | 47                   |
      | 2021-11-25 00:05:00 | 47                   |
      | 2021-11-24 00:06:00 | 47                   |
      | 2021-11-23 00:07:00 | 47                   |
      | 2021-11-22 00:08:00 | 47                   |
      | 2021-11-21 00:09:00 | 46                   |
      | 2021-11-20 00:10:00 | 46                   |
      +---------------------+----------------------+

YEAR

  • Sintaxe

    INT YEAR(DATETIME|TIMESTAMP|DATE|STRING <date>) 
  • Descrição

    Retorna o ano em que um valor de date se encontra. Esta é uma função adicional do MaxCompute V2.0.

  • Parâmetros

    date: obrigatório. Um valor de data dos tipos DATETIME, TIMESTAMP, DATE ou STRING. O valor de entrada deve estar no formato yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Se o valor for do tipo STRING, ele deve incluir pelo menos a parte yyyy-mm-dd e não pode conter strings extras.

  • Valor de retorno

    Um valor do tipo INT é retornado. O valor de retorno varia conforme as seguintes regras:

    • Se o valor de date não for dos tipos DATETIME, TIMESTAMP, DATE ou STRING, ou se o formato não atender aos requisitos, null será retornado.

    • Se o valor de date for nulo, null será retornado.

  • Exemplos

    • Exemplos com dados estáticos

      -- The return value is 1970. 
      SELECT YEAR('1970-01-01 12:30:00');
      
      -- The return value is 1970. 
      SELECT YEAR('1970-01-01'); 
      
      -- The return value is 70. 
      SELECT YEAR('70-01-01');
      
      -- The return value is NULL. 
      SELECT YEAR('1970/03/09'); 
      
      -- The return value is NULL. 
      SELECT YEAR(null); 
    • Exemplos com dados de tabela

      Obtenha o ano em que cada valor de data nas colunas date1, datetime1, timestamp1 e date3 se encontra. Este exemplo utiliza os dados em Dados de amostra. Instrução de exemplo:

      -- Enable the MaxCompute V2.0 data type edition. Commit the following SET statement together with the SQL statement. 
      SET odps.sql.type.system.odps2=true;
      SELECT date1,  
             YEAR(date1) AS date1_year, 
             datetime1, 
             YEAR(datetime1) AS datetime1_year, 
             timestamp1, 
             YEAR(timestamp1) AS timestamp1_year, 
             date3, 
             YEAR(date3) AS date3_year 
        FROM mf_date_fun_t;

      O seguinte resultado é retornado.

      +------------+------------+---------------------+----------------+-------------------------------+-----------------+------------+------------+
      | date1      | date1_year | datetime1           | datetime1_year | timestamp1                    | timestamp1_year | date3      | date3_year |
      +------------+------------+---------------------+----------------+-------------------------------+-----------------+------------+------------+
      | 2021-11-29 | 2021       | 2021-11-29 00:01:00 | 2021           | 2021-01-11 00:00:00.123456789 | 2021            | 2021-11-20 | 2021       |
      | 2021-11-28 | 2021       | 2021-11-28 00:02:00 | 2021           | 2021-02-11 00:00:00.123456789 | 2021            | 2021-11-21 | 2021       |
      | 2021-11-27 | 2021       | 2021-11-27 00:03:00 | 2021           | 2021-03-11 00:00:00.123456789 | 2021            | 2021-11-22 | 2021       |
      | 2021-11-26 | 2021       | 2021-11-26 00:04:00 | 2021           | 2021-04-11 00:00:00.123456789 | 2021            | 2021-11-23 | 2021       |
      | 2021-11-25 | 2021       | 2021-11-25 00:05:00 | 2021           | 2021-05-11 00:00:00.123456789 | 2021            | 2021-11-24 | 2021       |
      | 2021-11-24 | 2021       | 2021-11-24 00:06:00 | 2021           | 2021-06-11 00:00:00.123456789 | 2021            | 2021-11-25 | 2021       |
      | 2021-11-23 | 2021       | 2021-11-23 00:07:00 | 2021           | 2021-07-11 00:00:00.123456789 | 2021            | 2021-11-26 | 2021       |
      | 2021-11-22 | 2021       | 2021-11-22 00:08:00 | 2021           | 2021-08-11 00:00:00.123456789 | 2021            | 2021-11-27 | 2021       |
      | 2021-11-21 | 2021       | 2021-11-21 00:09:00 | 2021           | 2021-09-11 00:00:00.123456789 | 2021            | 2021-11-28 | 2021       |
      | 2021-11-20 | 2021       | 2021-11-20 00:10:00 | 2021           | 2021-10-11 00:00:00.123456789 | 2021            | 2021-11-29 | 2021       |
      +------------+------------+---------------------+----------------+-------------------------------+-----------------+------------+------------+

Referências