Tous les produits
Search
Centre de documentation

MaxCompute:Fonctions de date

Dernière mise à jour :Oct 10, 2026

Cette rubrique décrit la syntaxe et les paramètres des fonctions de date prises en charge par MaxCompute. Elle fournit également des exemples d'utilisation. Sélectionnez la fonction de date appropriée pour effectuer des calculs ou des conversions de dates selon vos besoins métier.

Fonction

Description

ADD_MONTHS

Renvoie une valeur de date obtenue après l'ajout d'un nombre de mois à une date spécifiée.

CURRENT_TIMESTAMP

Renvoie l'horodatage actuel.

CURRENT_TIMEZONE

Renvoie le fuseau horaire du système actuel.

DATE_ADD

Ajoute ou soustrait un nombre de jours à une valeur de date en fonction de l'intervalle spécifié par delta. Seules les modifications par jour sont prises en charge. La fonction DATE_ADD est l'inverse de la fonction DATE_SUB.

DATEADD

Modifie une valeur de date en fonction de l'unité de temps spécifiée par datepart et de l'intervalle spécifié par delta. Les modifications par année, mois, jour, heure, minute ou seconde sont prises en charge.

DATE_FORMAT

Convertit une valeur de date en chaîne dans un format spécifié.

DATE_SUB

Ajoute ou soustrait un nombre de jours à une valeur de date en fonction de l'intervalle spécifié par delta. La fonction DATE_SUB est l'inverse de la fonction DATE_ADD.

DATEDIFF

Calcule la différence entre deux valeurs de date en fonction de l'unité de temps spécifiée par datepart.

DATEPART

Renvoie un composant spécifié d'une valeur de date en fonction de l'unité de temps spécifiée par datepart.

DATETRUNC

Tronque une valeur de date en fonction de l'unité de temps spécifiée par datepart.

DAY

Renvoie le jour correspondant à une valeur de date.

DAYOFMONTH

Renvoie le composant jour d'une valeur de date.

DAYOFWEEK

Renvoie le jour de la semaine correspondant à une valeur de date.

DAYOFYEAR

Renvoie un entier représentant le jour séquentiel de l'année.

EXTRACT

Renvoie un composant spécifié d'un horodatage.

FROM_UNIXTIME

Convertit un horodatage UNIX de type BIGINT en une valeur de date de type DATETIME.

FROM_UTC_TIMESTAMP

Convertit un horodatage UTC en un horodatage pour un fuseau horaire spécifié.

GETDATE

Renvoie l'heure système actuelle sous forme de valeur de date.

HOUR

Renvoie le composant heure d'une valeur de date.

ISDATE

Détermine si une chaîne de date peut être convertie en une valeur de date dans un format spécifié.

LAST_DAY

Renvoie le dernier jour du mois correspondant à une valeur de date.

LASTDAY

Renvoie le dernier jour du mois correspondant à une valeur de date.

MINUTE

Renvoie le composant minute d'une valeur de date.

MONTH

Renvoie le mois correspondant à une valeur de date.

MONTHS_BETWEEN

Renvoie le nombre de mois entre les valeurs de date spécifiées.

NEXT_DAY

Renvoie la date du premier jour de la semaine postérieur à une valeur de date et correspondant à la semaine spécifiée.

NOW

Renvoie la date et l'heure système actuelles.

QUARTER

Renvoie le trimestre correspondant à une valeur de date.

SECOND

Renvoie le composant seconde d'une valeur de date.

TO_CHAR

Convertit une valeur de date en chaîne dans un format spécifié.

TO_DATE

Convertit une chaîne en une valeur de date dans un format spécifié.

TO_MILLIS

Convertit une valeur de date en un horodatage UNIX précis à la milliseconde.

TRUNC_TIME

Tronque les données de date ou d'heure selon l'unité de temps datepart spécifiée et renvoie des données de type STRING.

UNIX_TIMESTAMP

Convertit une valeur de date en un horodatage UNIX sous forme d'entier.

WEEKDAY

Renvoie un nombre représentant le jour de la semaine correspondant à une valeur de date.

WEEKOFYEAR

Renvoie un nombre représentant la semaine de l'année correspondant à une valeur de date.

YEAR

Renvoie l'année correspondant à une valeur de date.

Remarques sur l'utilisation

MaxCompute V2.0 propose des fonctions supplémentaires. Si les fonctions que vous utilisez impliquent de nouveaux types de données pris en charge dans l'édition de type de données MaxCompute V2.0, vous devez exécuter l'instruction SET pour activer cette édition. Les nouveaux types de données incluent TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP et BINARY.

  • Niveau session : pour utiliser l'édition de type de données MaxCompute V2.0, ajoutez set odps.sql.type.system.odps2=true; avant l'instruction SQL à exécuter, puis validez et exécutez-les ensemble.

  • Niveau projet : le propriétaire du projet peut activer l'édition de type de données MaxCompute V2.0 pour le projet selon les besoins. La configuration prend effet après 10 à 15 minutes. Pour activer l'édition de type de données MaxCompute V2.0 au niveau du projet, exécutez la commande suivante :

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

    Pour plus d'informations sur setproject, consultez Commandes de projet. Pour plus d'informations sur les précautions à prendre lors de l'activation de l'édition de type de données MaxCompute V2.0 au niveau du projet, consultez Guide des versions de type de données.

Exemples de données

Cette section fournit des exemples de données source pour vous aider à comprendre l'utilisation des fonctions de date. Dans cette rubrique, une table nommée mf_date_fun_t est créée et des données y sont insérées. Exemples d'instructions :

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

Interrogez les données de la table mf_date_fun_t. Exemple d'instruction :

SELECT * FROM mf_date_fun_t;

Le résultat suivant est renvoyé.

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

  • Syntaxe

    STRING ADD_MONTHS(DATE|DATETIME|TIMESTAMP|STRING <startdate>, INT <num_months>)
  • Description

    Renvoie une valeur de date obtenue après l'ajout du nombre de mois spécifié par num_months à startdate. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    Paramètre

    Obligatoire

    Description

    startdate

    Oui

    Valeur de type DATE, DATETIME, TIMESTAMP ou STRING. La valeur doit être au format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3. Si la valeur est de type STRING, elle doit inclure au moins la partie yyyy-mm-dd et ne pas contenir de chaînes supplémentaires.

    num_months

    Oui

    Valeur de type INT.

  • Valeur de retour

    Une valeur de type STRING est renvoyée. La valeur de retour est au format yyyy-mm-dd. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de startdate n'est pas de type DATE, DATETIME, TIMESTAMP ou STRING, ou si le format ne respecte pas les exigences, la valeur NULL est renvoyée.

    • Si la valeur de startdate est NULL, une erreur est renvoyée.

    • Si la valeur de num_months est NULL, la valeur NULL est renvoyée.

  • Exemples

    • Exemples de données statiques

      -- 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);
    • Exemples de données de table

      Ajoutez des mois spécifiés aux dates des colonnes date1, datetime1, timestamp1 et date3. Les données de l'Exemples de données sont utilisées dans cet exemple. Exemples d'instructions :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    TIMESTAMP CURRENT_TIMESTAMP()
  • Description

    Renvoie l'horodatage actuel. La valeur renvoyée n'est pas fixe. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Valeur renvoyée

    Une valeur de type TIMESTAMP est renvoyée.

  • Exemples

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

CURRENT_TIMEZONE

  • Syntaxe

    STRING CURRENT_TIMEZONE()
  • Description

    Renvoie le fuseau horaire du système actuel.

  • Valeur renvoyée

    Une valeur de type STRING est renvoyée.

  • Exemples

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

DATE_ADD

  • Syntaxe

    DATE DATE_ADD(DATE|TIMESTAMP|STRING <startdate>, BIGINT <delta>)
  • Description

    Ajoute ou soustrait un nombre de jours spécifié par delta à une valeur de date spécifiée par startdate.

    Remarque
    • Pour ajouter ou soustraire un nombre de jours à l'heure actuelle, vous pouvez utiliser cette fonction avec la fonction GETDATE.

    • Si vous devez effectuer des ajustements précis au niveau de l'heure, de la minute ou de la seconde, reportez-vous à la fonction DATEADD. Cette fonction prend uniquement en charge l'incrémentation ou la décrémentation d'une seule unité parmi les années, les mois, les jours, les heures, les minutes ou les secondes. Si vous devez ajuster plusieurs granularités simultanément, nous vous recommandons d'utiliser une fonction définie par l'utilisateur.

    • La logique de cette fonction est opposée à celle de la fonction DATE_SUB.

  • Paramètres

    Parameter

    Required

    Description

    startdate

    Yes

    La date de début. Une valeur de type DATE, DATETIME ou STRING est prise en charge.

    Si la valeur d'entrée est de type STRING et que l'édition de type de données MaxCompute V1.0 est utilisée dans votre projet, la valeur d'entrée est implicitement convertie en type DATE avant le calcul. La valeur d'entrée de type STRING doit inclure au moins la partie 'yyyy-mm-dd', telle que '2019-12-27'.

    delta

    Yes

    Le nombre de jours que vous souhaitez ajouter ou soustraire. La valeur de ce paramètre doit être de type BIGINT. Si la valeur de delta est supérieure à 0, un nombre de jours est ajouté à la date de début. Si la valeur de delta est inférieure à 0, un nombre de jours est soustrait de la date de début. Si la valeur de delta est égale à 0, la valeur de date reste inchangée.

  • Valeur renvoyée

    Une valeur de type DATE est renvoyée. La valeur renvoyée est au format yyyy-mm-dd. La valeur renvoyée varie selon les règles suivantes :

    • Si la valeur de startdate n'est pas de type DATE, DATETIME ou STRING, une erreur est renvoyée.

    • Si la valeur de startdate est null, une erreur est renvoyée.

    • Si la valeur de delta est null, null est renvoyé.

  • Exemples

    • Exemples de données statiques

      -- 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);
    • Exemples de données de table

      Modifiez les valeurs de date dans les colonnes date1, datetime1 et timestamp1 en fonction du nombre de jours spécifié par delta. Les données de l'exemple Données d'exemple sont utilisées dans cet exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    DATE|DATETIME DATEADD(DATE|DATETIME|TIMESTAMP <date>, BIGINT <delta>, STRING <datepart>)
  • Description

    Modifie une valeur de date en fonction de l'unité de temps spécifiée par datepart et de l'intervalle spécifié par delta. Pour ajouter ou soustraire un intervalle à l'heure actuelle, vous pouvez utiliser cette fonction avec la fonction GETDATE.

  • Paramètres

    Parameter

    Required

    Description

    date

    Yes

    Une valeur de date de type DATE, DATETIME ou TIMESTAMP. Une valeur de type STRING est implicitement convertie en valeur de type DATETIME avant le calcul si le format de la valeur est conforme au format de type DATETIME yyyy-mm-dd hh:mi:ss, tel que 2021-08-28 00:00:00, et si l'édition de type de données MaxCompute V1.0 est utilisée.

    delta

    Yes

    L'intervalle que vous souhaitez ajouter ou soustraire au composant spécifié d'une valeur de date. La valeur de ce paramètre doit être de type BIGINT. Si la valeur de delta est supérieure à 0, un intervalle est ajouté à la valeur de date. Sinon, un intervalle est soustrait de la valeur de date. Si la valeur d'entrée est de type STRING ou DOUBLE, la valeur est implicitement convertie en valeur de type BIGINT avant le calcul.

    Remarque
    • Si vous ajoutez ou soustrayez l'intervalle spécifié par delta en fonction de l'unité de temps spécifiée par datepart, une retenue ou un retour sur des composants de date plus significatifs peut se produire. Les parties année, mois, heure, minute et seconde sont calculées respectivement selon les systèmes numériques décimal, duodécimal, base 24 et base 60.

    • Si la fonction DATEADD ajoute l'intervalle spécifié par delta au composant mois d'une valeur de date et que cette opération ne provoque pas de dépassement sur le composant jour, conservez la valeur du composant jour. Sinon, définissez la valeur du composant jour sur le dernier jour du mois spécifié.

    datepart

    Yes

    La partie de la date que vous souhaitez modifier dans la valeur de date. La valeur est une constante de type STRING. Si le format de la valeur d'entrée n'est pas valide ou si la valeur d'entrée n'est pas une constante de type STRING, une erreur est renvoyée.

    La valeur de ce paramètre est spécifiée conformément aux règles de conversion entre les types STRING et DATETIME. La valeur yyyy indique le composant année d'une valeur de date. La valeur mm indique le composant mois d'une valeur de date. La valeur dd indique le composant jour d'une valeur de date. Pour plus d'informations sur les règles de conversion de type, consultez Conversion de type de données. Le format de date/heure étendu (EDTF) est également pris en charge, tel que -year, -month, -mon, -day ou -hour.

  • Valeur renvoyée

    Une valeur de type DATE ou DATETIME est renvoyée. La valeur renvoyée est au format yyyy-mm-dd ou yyyy-mm-dd hh:mi:ss. La valeur renvoyée varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATE, DATETIME ou TIMESTAMP, une erreur est renvoyée.

    • Si la valeur de date est null, une erreur est renvoyée.

    • Si la valeur de delta ou de datepart est null, null est renvoyé.

  • Exemples

    • Exemples de données statiques

      • Exemple 1 : utilisation courante

        -- 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');
      • Exemple 2 : utilisation de DATEADD où une valeur de type DATETIME est exprimée sous forme de constante.

        Dans les instructions SQL MaxCompute, une valeur de type DATETIME ne peut pas être directement exprimée sous forme de constante. L'instruction suivante utilise une expression non valide d'une valeur de type DATETIME :

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

        Pour décrire une constante de type DATETIME, utilisez une expression valide d'une valeur de type DATETIME dans l'instruction suivante :

        -- 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');
      • Exemple 3 : La valeur d'entrée est de type 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');
    • Exemples de données de table

      Modifiez les valeurs de date dans les colonnes date1, datetime1 et timestamp1 en fonction de l'unité de temps spécifiée par datepart et de l'intervalle spécifié par delta. Les données de l'exemple Données d'exemple sont utilisées dans cet exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    STRING DATE_FORMAT(DATE|TIMESTAMP|STRING <date>, STRING <format>)
  • Description

    Convertit une valeur date en chaîne selon le format spécifié.

  • Paramètres

    Paramètre

    Obligatoire

    Description

    date

    Oui

    La valeur de date à convertir. Elle peut être de type DATE, TIMESTAMP ou STRING.

    • Les valeurs de date de type DATE ou STRING sont prises en charge uniquement lorsque l'édition de type de données compatible avec Hive est activée. Vous pouvez exécuter la commande set odps.sql.hive.compatible=true; pour activer cette édition.

    • Si la valeur de date est de type STRING, seuls les formats suivants sont pris en charge :

      • 'yyyy-MM-dd', par exemple '2019-12-27'.

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

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

    format

    Oui

    Une constante de type STRING. Le paramètre format spécifie le format de date, tel que yyyy-MM-dd hh:mm:ss:SSS et yyyy-MM-dd hh:mi:ss:SSS. La valeur se compose des éléments suivants :

    • YYYY ou yyyy : l'année. yyyy représente l'année civile et YYYY représente l'année de la semaine.

      Remarque

      L'année de la semaine peut différer de l'année réelle. Soyez prudent lors de l'utilisation du format d'année de la semaine.

    • MM : le mois.

    • mm : la minute.

    • dd : le jour.

    • HH : l'heure au format 24 heures.

    • hh : l'heure au format 12 heures.

    • mi : la minute.

    • ss : la seconde.

    • SSS : la milliseconde.

    Important
    • Si l'édition de type de données compatible avec Hive est désactivée, HH et hh indiquent tous deux l'utilisation du format 24 heures. Dans ce cas, le format de date doit être yyyy-MM-dd hh:mi:ss. Si vous utilisez yyyy-MM-dd hh:mm:ss, le composant mm prend la même valeur que le composant MM.

    • Si l'édition de type de données compatible avec Hive est activée, HH indique l'utilisation du format 24 heures et hh indique l'utilisation du format 12 heures. Dans ce cas, le format de date doit être yyyy-MM-dd hh:mm:ss. Si vous utilisez yyyy-MM-dd hh:mi:ss, la valeur NULL est renvoyée.

  • Valeur de retour

    Une valeur de type STRING est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATE ou TIMESTAMP, la valeur NULL est renvoyée.

    • Si la valeur de date est NULL, une erreur est renvoyée.

    • Si la valeur de format est NULL, la valeur NULL est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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');
    • Exemples avec des données de table

      Convertissez les valeurs de date des colonnes datetime1 et timestamp1 en chaînes selon un format spécifié. Cet exemple utilise les données de la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    DATE DATE_SUB(DATE|TIMESTAMP|STRING <startdate>, BIGINT <delta>)
  • Description

    Ajoute ou soustrait un nombre de jours spécifié par le paramètre delta à une valeur de date spécifiée par le paramètre startdate.

    Remarque
    • Pour ajouter ou soustraire un nombre de jours à l'heure actuelle, vous pouvez combiner cette fonction avec la fonction GETDATE.

    • Si vous devez effectuer des ajustements précis au niveau de l'heure, de la minute ou de la seconde, reportez-vous à la fonction DATEADD. Cette fonction ne prend en charge que l'incrémentation ou la décrémentation d'une seule unité parmi les années, les mois, les jours, les heures, les minutes ou les secondes. Si vous devez ajuster plusieurs granularités simultanément, nous vous recommandons d'utiliser une fonction définie par l'utilisateur.

    • La logique de cette fonction est opposée à celle de la fonction DATE_ADD.

  • Paramètres

    Paramètre

    Obligatoire

    Description

    startdate

    Oui

    La date de début. Une valeur de type DATE, DATETIME ou STRING est prise en charge. Si la valeur d'entrée est de type STRING et que l'édition de type de données MaxCompute V1.0 est utilisée dans votre projet, la valeur d'entrée est implicitement convertie en type DATE avant le calcul. La valeur d'entrée de type STRING doit inclure au moins la partie 'yyyy-mm-dd', par exemple '2019-12-27'.

    delta

    Oui

    Le nombre de jours à ajouter ou à soustraire. La valeur de ce paramètre doit être de type BIGINT. Si la valeur de delta est supérieure à 0, un nombre de jours est soustrait de la date de début. Si la valeur de delta est inférieure à 0, un nombre de jours est ajouté à la date de début. Si la valeur de delta est égale à 0, la valeur de date reste inchangée.

  • Valeur de retour

    Une valeur de type DATE est renvoyée. La valeur de retour est au format yyyy-mm-dd. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de startdate n'est pas de type DATE, DATETIME ou STRING, une erreur est renvoyée.

    • Si la valeur de startdate est NULL, une erreur est renvoyée.

    • Si la valeur de delta est NULL, la valeur NULL est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Modifiez les valeurs de date des colonnes date1, datetime1 et timestamp1 en fonction du nombre de jours spécifié par delta. Cet exemple utilise les données de la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    BIGINT DATEDIFF(DATE|DATETIME|TIMESTAMP <date1>, DATE|DATETIME|TIMESTAMP <date2>, STRING <datepart>)
  • Description

    Calcule la différence entre date1 et date2. La différence est mesurée dans l'unité de temps spécifiée par datepart.

  • Paramètres

    Paramètre

    Obligatoire

    Description

    date1 et date2

    Oui

    Une valeur de type DATE, DATETIME ou TIMESTAMP. Les paramètres spécifient le minuende et le soustrayende. Si les valeurs d'entrée sont de type STRING et que l'édition de type de données MaxCompute V1.0 est utilisée dans votre projet, les valeurs d'entrée sont implicitement converties en type DATETIME avant le calcul.

    Remarque

    Seule l'édition de type de données MaxCompute V2.0 prend en charge le type TIMESTAMP. Pour plus d'informations, consultez Version 2.0 des types de données.

    datepart

    Non

    L'unité de temps, qui est une constante de type STRING.

    Si vous activez l'édition de type de données MaxCompute V2.0, vous pouvez laisser le paramètre datepart vide. Valeur par défaut : day. Pour plus d'informations sur l'édition de type de données MaxCompute V2.0, consultez le Guide des versions de types de données. Le format EDTF est également pris en charge, par exemple -year, -month, -mon, -day ou -hour.

    Remarque

    Cette fonction omet l'unité inférieure en fonction de l'unité de temps spécifiée par le paramètre datepart, puis calcule le résultat.

  • Valeur de retour

    Une valeur de type BIGINT est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date1 ou de date2 n'est pas de type DATE, DATETIME ou TIMESTAMP, une erreur est renvoyée.

    • Si date1 est inférieur à date2, la valeur de retour est négative.

    • Si la valeur de date1 ou de date2 est NULL, la valeur NULL est renvoyée.

    • Si la valeur de datepart est NULL, la valeur NULL est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      • Exemple 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'); 

        Le résultat suivant est renvoyé.

        +------------+
        | _c0        |
        +------------+
        | 1          |
        +------------+
      • Exemple 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'); 

        Le résultat suivant est renvoyé.

        +------------+
        | _c0        |
        +------------+
        | 1          |
        +------------+
      • Exemple 3

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

        Le résultat suivant est renvoyé.

        +------------+
        | _c0        |
        +------------+
        | 1800       |
        +------------+
      • Exemple 4

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

        Le résultat suivant est renvoyé.

        +------------+
        | _c0        |
        +------------+
        | 30         |
        +------------+
      • Exemple 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');

        Le résultat suivant est renvoyé.

        +------------+
        | _c0        |
        +------------+
        | 16         |
        +------------+
      • Exemple 6

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

        Le résultat suivant est renvoyé.

        +------------+
        | _c0        |
        +------------+
        | NULL       |
        +------------+
    • Exemples avec des données de table

      Calculez les différences entre les valeurs des colonnes date1 et date2, entre les valeurs des colonnes datetime1 et datetime2, et entre les valeurs des colonnes timestamp1 et timestamp2. Les différences sont mesurées dans l'unité de temps spécifiée. Cet exemple utilise les données de la section Données d'exemple. Exemples d'instructions :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    BIGINT DATEPART(DATE|DATETIME|TIMESTAMP <date>, STRING <datepart>)
  • Description

    Renvoie une composante spécifiée d'une valeur date selon l'unité temporelle indiquée par le paramètre datepart.

  • Paramètres

    Paramètre

    Obligatoire

    Description

    date

    Oui

    Valeur de type DATE, DATETIME ou TIMESTAMP. Si les valeurs d'entrée sont de type STRING et que votre projet utilise l'édition de types de données MaxCompute V1.0, elles sont implicitement converties en type DATETIME avant le calcul.

    datepart

    Oui

    Constante de type STRING. Ce paramètre prend en charge EDTF.

    La valeur de ce paramètre respecte les règles de conversion entre les types STRING et DATETIME. La valeur yyyy désigne l'année. La valeur mm indique le mois. La valeur dd correspond au jour. Pour plus d'informations sur les règles de conversion des types, consultez la rubrique Conversion des types de données. Le format EDTF est également pris en charge, par exemple -year, -month, -mon, -day ou -hour.

  • Valeur renvoyée

    Une valeur de type BIGINT est renvoyée. Le résultat varie selon les règles suivantes :

    • Si la valeur du paramètre date n'est pas de type DATE, DATETIME ou TIMESTAMP, une erreur est renvoyée.

    • Si la valeur du paramètre date est null, une erreur est renvoyée.

    • Si la valeur du paramètre datepart est null, la valeur null est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Extrayez les valeurs de date des colonnes date1, datetime1 et timestamp1 selon l'unité temporelle spécifiée par datepart. Cet exemple utilise les données présentées dans la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    DATE|DATETIME DATETRUNC(DATE|DATETIME|TIMESTAMP <date>, STRING <datepart>)
  • Description

    Tronque une valeur date selon l'unité temporelle indiquée par le paramètre datepart.

  • Paramètres

    Paramètre

    Obligatoire

    Description

    date

    Oui

    Valeur de type DATE, DATETIME ou TIMESTAMP. Si les valeurs d'entrée sont de type STRING et que votre projet utilise l'édition de types de données MaxCompute V1.0, elles sont implicitement converties en type DATETIME avant le calcul.

    datepart

    Oui

    Constante de type STRING. Ce paramètre prend en charge EDTF.

    La valeur de ce paramètre respecte les règles de conversion entre les types STRING et DATETIME. La valeur yyyy désigne l'année. La valeur mm indique le mois. La valeur dd correspond au jour. Pour plus d'informations sur les règles de conversion des types, consultez la rubrique Conversion des types de données. Le format EDTF est également pris en charge, par exemple -year, -month, -mon, -day ou -hour.

  • Valeur renvoyée

    Une valeur de type DATE ou DATETIME est renvoyée. Le résultat est au format yyyy-mm-dd ou yyyy-mm-dd hh:mi:ss. Le résultat varie selon les règles suivantes :

    • Si la valeur du paramètre date n'est pas de type DATE, DATETIME ou TIMESTAMP, une erreur est renvoyée.

    • Si la valeur du paramètre date est null, une erreur est renvoyée.

    • Si la valeur du paramètre datepart est null, la valeur null est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Tronquez les valeurs de date des colonnes date1, datetime1 et timestamp1 selon l'unité temporelle spécifiée par datepart. Cet exemple utilise les données présentées dans la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    INT DAY(DATETIME|TIMESTAMP|DATE|STRING <date>)
  • Description

    Renvoie le jour correspondant à une valeur de date. Cette fonction est disponible en tant que fonction supplémentaire dans MaxCompute V2.0.

  • Paramètres

    date : obligatoire. Valeur de date de type DATETIME, TIMESTAMP, DATE ou STRING. La valeur d'entrée doit être au format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au minimum la partie yyyy-mm-dd et ne pas contenir de chaînes supplémentaires.

  • Valeur renvoyée

    Une valeur de type INT est renvoyée. Le résultat varie selon les règles suivantes :

    • Si la valeur du paramètre date n'est pas de type DATETIME, TIMESTAMP, DATE ou STRING, ou si le format ne respecte pas les exigences, la valeur null est renvoyée.

    • Si la valeur du paramètre date est null, la valeur null est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Obtenez le jour correspondant à chaque valeur de date des colonnes date1, datetime1, timestamp1 et date3. Cet exemple utilise les données présentées dans la section Données d'exemple. Exemples d'instructions :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    INT DAYOFMONTH(DATETIME|TIMESTAMP|DATE|STRING <date>)
  • Description

    Renvoie la composante jour d'une valeur de date. Cette fonction est disponible en tant que fonction supplémentaire dans MaxCompute V2.0.

  • Paramètres

    date : obligatoire. Valeur de date de type DATETIME, TIMESTAMP, DATE ou STRING. La valeur d'entrée doit être au format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au minimum la partie yyyy-mm-dd et ne pas contenir de chaînes supplémentaires.

  • Valeur renvoyée

    Une valeur de type INT est renvoyée. Le résultat varie selon les règles suivantes :

    • Si la valeur du paramètre date n'est pas de type DATETIME, TIMESTAMP, DATE ou STRING, ou si le format ne respecte pas les exigences, la valeur null est renvoyée.

    • Si la valeur du paramètre date est null, la valeur null est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Obtenez la composante jour des valeurs de date des colonnes date1, datetime1, timestamp1 et date3. Cet exemple utilise les données présentées dans la section Données d'exemple. Exemples d'instructions :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    INT DAYOFWEEK(DATETIME|TIMESTAMP|DATE|STRING <date>)
  • Description

    Renvoie le jour de la semaine correspondant à une valeur de date. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    date : obligatoire. Valeur de date de type DATETIME, TIMESTAMP, DATE ou STRING. La valeur d'entrée doit respecter le format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au moins la partie yyyy-mm-dd et ne pas contenir de chaînes supplémentaires.

  • Valeur de retour

    Une valeur de type INT est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATETIME, TIMESTAMP, DATE ou STRING, ou si le format ne respecte pas les exigences, la valeur null est renvoyée.

    • Si la valeur de date est null, la valeur null est renvoyée.

    • La valeur de retour est comprise entre 1 et 7. La valeur 1 correspond au dimanche, la valeur 2 au lundi, et ainsi de suite.

  • Exemples

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

DAYOFYEAR

  • Syntaxe

    INT DAYOFYEAR(DATETIME|TIMESTAMP|DATE|STRING <date>)
  • Description

    Renvoie un entier représentant le jour ordinal de l'année. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    date : obligatoire. Valeur de date de type DATETIME, TIMESTAMP, DATE ou STRING. La valeur d'entrée doit respecter le format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au moins la partie yyyy-mm-dd et ne pas contenir de chaînes supplémentaires.

  • Valeur de retour

    Une valeur de type INT est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATETIME, TIMESTAMP, DATE ou STRING, ou si le format ne respecte pas les exigences, la valeur null est renvoyée.

    • Si la valeur de date est null, la valeur null est renvoyée.

  • Exemples

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

EXTRACT

  • Syntaxe

    INT EXTRACT(<datepart> FROM DATE|DATETIME|TIMESTAMP <date>)
  • Description

    Extrait la composante de date spécifiée par datepart d'une valeur de date indiquée par date. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    Paramètre

    Obligatoire

    Description

    datepart

    Oui

    La valeur peut être YEAR, MONTH, DAY, HOUR, MINUTE ou SECOND.

    date

    Oui

    Valeur de date de type DATE, DATETIME, TIMESTAMP ou STRING. La valeur d'entrée doit respecter le format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3. Si la valeur est de type STRING, elle doit inclure au moins la partie yyyy-mm-dd et ne pas contenir de chaînes supplémentaires.

  • Valeur de retour

    Une valeur de type INT est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de datepart n'est pas YEAR, MONTH, DAY, HOUR, MINUTE ou SECOND, une erreur est renvoyée.

    • Si la valeur de datepart est null, une erreur est renvoyée.

    • Si la valeur de date n'est pas de type DATE, DATETIME, TIMESTAMP ou STRING, ou si elle est null, la valeur null est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Extrayez les composantes de date spécifiées à partir des valeurs de date de la colonne timestamp1. Les données de la section Données d'exemple sont utilisées dans cet exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    DATETIME FROM_UNIXTIME(BIGINT <unixtime>)
  • Description

    Convertit unixtime de type BIGINT en une valeur de date de type DATETIME.

  • Paramètres

    unixtime : obligatoire. Valeur de date de type BIGINT au format UNIX. La valeur de ce paramètre est précise à la seconde près. Valeurs valides : [-62167305600, 253402387200].

    Remarque

    Si la valeur d'entrée est de type STRING, DOUBLE ou DECIMAL et que l'édition de type de données MaxCompute V1.0 est utilisée dans votre projet, la valeur d'entrée est implicitement convertie en type BIGINT avant le calcul.

  • Valeur de retour

    Une valeur de type DATETIME est renvoyée. La valeur de retour est au format yyyy-mm-dd hh:mi:ss. Si la valeur de unixtime est null, la valeur null est renvoyée.

    Remarque

    Vous pouvez exécuter la commande set odps.sql.hive.compatible=true; pour activer l'édition de type de données compatible Hive. Dans cette édition, tenez compte des règles suivantes :

    • Si la valeur d'entrée est de type STRING, une valeur de date de type STRING est renvoyée.

    • Vous pouvez spécifier le deuxième paramètre d'entrée pour déterminer le format de la valeur de retour. Par exemple, vous pouvez définir le format de date et d'heure de la valeur de retour sur yyyy-MM-dd ou YYYY-MM-dd dans le deuxième paramètre d'entrée. yyyy représente l'année civile et YYYY représente l'année calendaire hebdomadaire. L'année calendaire hebdomadaire peut différer de l'année réelle. Soyez prudent lors de l'utilisation du format d'année calendaire hebdomadaire.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Convertissez les valeurs de la colonne date4 en valeurs de date. Les données de la section Données d'exemple sont utilisées dans cet exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    TIMESTAMP FROM_UTC_TIMESTAMP({any primitive type}*, STRING <timezone>)
  • Description

    Renvoie un horodatage converti du temps universel coordonné (UTC) vers un fuseau horaire spécifié. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

    Important

    La valeur de retour de la fonction FROM_UTC_TIMESTAMP est également affectée par la valeur de odps.sql.timezone configurée pour votre projet. Si vous configurez odps.sql.timezone=Asia/Shanghai, le fuseau horaire UTC+8 est utilisé, soit 8 heures d'avance sur l'UTC. Dans ce cas, 8 heures sont ajoutées au résultat de calcul de la fonction FROM_UTC_TIMESTAMP. Par exemple, la fonction FROM_UTC_TIMESTAMP(0, 'Asia/Shanghai') convertit un horodatage UTC+0 en un horodatage à l'heure de Pékin (UTC+08:00), et le résultat de calcul est 0 + 8 x 3600 = 28800. La configuration odps.sql.timezone=Asia/Shanghai nécessite un décalage supplémentaire de 8 heures. Par conséquent, la valeur de retour est 1970-01-01 16:00:00.

  • Paramètres

    Paramètre

    Obligatoire

    Description

    {any primitive type}*

    Oui

    Horodatage de type TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT ou BIGINT. Si la valeur est de type TINYINT, SMALLINT, INT ou BIGINT, l'unité de temps est précise à la milliseconde.

    timezone

    Oui

    Nouveau fuseau horaire.

    Remarque

    Vous pouvez rechercher la liste des fuseaux horaires à l'aide d'un moteur de recherche.

  • Valeur de retour

    Une valeur de type TIMESTAMP est renvoyée. La valeur de retour est au format yyyy-mm-dd hh:mi:ss.ff3. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de {any primitive type}* n'est pas de type TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT ou BIGINT, une erreur est renvoyée.

    • Si la valeur de {any primitive type}* est null, une erreur est renvoyée.

    • Si la valeur de timezone est null, la valeur null est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Convertissez les valeurs de date des colonnes datetime1 et timestamp1 en horodatages dans un fuseau horaire spécifié. Les données de la section Données d'exemple sont utilisées dans cet exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    DATETIME GETDATE()
  • Description

    Renvoie l'heure système actuelle sous forme de valeur de date. MaxCompute utilise UTC+8 comme fuseau horaire standard.

  • Valeur de retour

    La date et l'heure actuelles sont renvoyées sous forme de type DATETIME.

    Remarque

    Dans MaxCompute SQL, GETDATE renvoie toujours une valeur fixe. La valeur de retour correspond à un moment arbitraire lors de l'exécution de la tâche SQL MaxCompute. L'heure est précise à la seconde près. Si vous activez l'édition de type de données MaxCompute V2.0, l'heure est précise à la milliseconde près.

HOUR

  • Syntaxe

    INT HOUR(DATETIME|TIMESTAMP|STRING <date>)
  • Description

    Renvoie la composante horaire d'une valeur de date.

  • Paramètres

    date : obligatoire. Valeur de date de type DATETIME, TIMESTAMP ou STRING. La valeur de date est au format yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3. Si la valeur est de type STRING, elle doit inclure au moins la partie yyyy-mm-dd et ne doit pas contenir de chaînes supplémentaires. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Valeur de retour

    Une valeur de type INT est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATETIME, TIMESTAMP ou STRING, ou si le format ne respecte pas les exigences, la valeur null est renvoyée.

    • Si la valeur de date est null, la valeur null est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Obtenez les composantes horaires des valeurs de date dans les colonnes datetime1 et timestamp1. Cet exemple utilise les données de la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    BOOLEAN ISDATE(STRING <date>, STRING <format>)
  • Description

    Détermine si une chaîne de date peut être convertie en une valeur de date dans un format spécifié. Si la chaîne de date peut être convertie en une valeur de date dans le format spécifié, la valeur true est renvoyée. Sinon, la valeur false est renvoyée.

  • Paramètres

    Paramètre

    Obligatoire

    Description

    date

    Oui

    Valeur de type STRING. Si la valeur d'entrée est de type BIGINT, DOUBLE, DECIMAL ou DATETIME, elle est implicitement convertie en type STRING avant le calcul.

    format

    Oui

    Constante de type STRING. Ce paramètre ne prend pas en charge EDTF. Si des chaînes de format redondantes existent dans format, cette fonction convertit la chaîne de date correspondant à la première chaîne de format en une valeur de date. Les autres chaînes sont considérées comme des délimiteurs. Par exemple, isdate("1234-yyyy", "yyyy-yyyy") renvoie true.

  • Valeur de retour

    Une valeur de type BOOLEAN est renvoyée. Si la valeur de date ou de format est null, la valeur null est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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');
    • Exemples avec des données de table

      Déterminez si les chaînes de date de la colonne date3 peuvent être converties en valeurs de date dans un format spécifié. Cet exemple utilise les données de la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    STRING LAST_DAY(DATE|DATETIME|TIMESTAMP|STRING <date>)
  • Description

    Renvoie le dernier jour du mois auquel appartient une valeur de date. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    date : obligatoire. Valeur de date de type DATE, DATETIME, TIMESTAMP ou STRING. Si la valeur est de type STRING, elle doit inclure au moins la partie yyyy-mm-dd et ne doit pas contenir de chaînes supplémentaires.

  • Valeur de retour

    Une valeur de type STRING est renvoyée. La valeur de retour est au format yyyy-mm-dd. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATE, DATETIME, TIMESTAMP ou STRING, ou si le format ne respecte pas les exigences, la valeur null est renvoyée.

    • Si la valeur de date est null, une erreur est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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');
    • Exemples avec des données de table

      Obtenez le dernier jour du mois auquel appartient chaque valeur de date dans les colonnes date1, datetime1, timestamp1 et date3. Cet exemple utilise les données de la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    DATETIME LASTDAY(DATETIME <date>)
  • Description

    Renvoie le dernier jour du mois auquel appartient une valeur de date. Seule la composante jour est tronquée. Les composantes heure, minute et seconde sont exprimées sous la forme 00:00:00.

  • Paramètres

    date : valeur de date de type DATETIME. La valeur de date est au format yyyy-mm-dd hh:mi:ss. Si la valeur d'entrée est de type STRING et que l'édition de type de données MaxCompute V1.0 est utilisée dans votre projet, la valeur d'entrée est implicitement convertie en type DATETIME avant le calcul.

  • Valeur de retour

    Une valeur de type DATETIME est renvoyée. La valeur de retour est au format yyyy-mm-dd hh:mi:ss. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATETIME ou STRING, ou si le format ne respecte pas les exigences, une erreur est renvoyée.

    • Si la valeur de date est null, la valeur null est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Obtenez le dernier jour du mois auquel appartient chaque valeur de date de la colonne datetime1. Cet exemple utilise les données de la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    INT MINUTE(DATETIME|TIMESTAMP|STRING <date>)
  • Description

    Renvoie la composante minute d'une valeur de date. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    date : obligatoire. Valeur de date de type DATETIME, TIMESTAMP ou STRING. La valeur de date est au format yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3.

  • Valeur de retour

    Une valeur de type INT est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATETIME, TIMESTAMP ou STRING, ou si le format ne respecte pas les exigences, la valeur null est renvoyée.

    • Si la valeur de date est null, la valeur null est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Obtenez les composantes minutes des valeurs de date dans les colonnes datetime1 et timestamp1. Cet exemple utilise les données de la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    INT MONTH(DATETIME|TIMESTAMP|DATE|STRING <date>) 
  • Description

    Renvoie le mois auquel appartient une valeur de date. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    date : obligatoire. Valeur de date de type DATETIME, TIMESTAMP, DATE ou STRING. La valeur d'entrée est au format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au moins la partie yyyy-mm-dd et ne peut pas contenir de chaînes supplémentaires.

  • Valeur de retour

    Une valeur de type INT est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATETIME, TIMESTAMP, DATE ou STRING, ou si le format ne respecte pas les exigences, la valeur null est renvoyée.

    • Si la valeur de date est null, la valeur null est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Obtenez la composante mois de chaque valeur de date dans les colonnes date1, datetime1, timestamp1 et date3. Cet exemple utilise les données de la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    DOUBLE MONTHS_BETWEEN(DATETIME|TIMESTAMP|DATE|STRING <date1>, DATETIME|TIMESTAMP|DATE|STRING <date2>) 
  • description

    Renvoie le nombre de mois entre date1 et date2. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    date1 et date2 : obligatoire. Valeurs de type DATETIME, TIMESTAMP, DATE ou STRING. Les valeurs d'entrée sont au format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss, yyyy-mm-dd hh:mi:ss.ff3. Si les valeurs d'entrée sont de type STRING, elles doivent inclure au moins la partie yyyy-mm-dd et ne pas contenir de chaînes supplémentaires.

  • Valeur de retour

    Une valeur de type DOUBLE est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si date1 est postérieure à date2, une valeur positive est renvoyée. Si date2 est postérieure à date1, une valeur négative est renvoyée.

    • Si date1 et date2 correspondent aux derniers jours de deux mois, la valeur de retour est un entier représentant le nombre de mois. Sinon, la valeur de retour est calculée à l'aide de la formule suivante : (date1 - date2)/31.

    • Si la valeur de date1 ou de date2 est null, null est renvoyé.

  • Exemples

    • Exemples de données statiques

      -- 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);
    • Exemples de données de table

      Calculez le nombre de mois entre les valeurs de date des colonnes timestamp1 et timestamp2. Les données de la section Données d'exemple sont utilisées dans cet exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    STRING NEXT_DAY(TIMESTAMP|DATE|DATETIME|STRING <startdate>, STRING <week>)
  • description

    Renvoie la date du premier jour postérieur à startdate et correspondant à la valeur week. La date du jour spécifié de la semaine suivante est renvoyée. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    Paramètre

    Obligatoire

    description

    startdate

    Oui

    Valeur de date de type DATE, DATETIME, TIMESTAMP ou STRING. La valeur d'entrée est au format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3. Si la valeur est de type STRING, elle doit inclure au moins la partie yyyy-mm-dd et ne pas contenir de chaînes supplémentaires.

    week

    Oui

    Valeur de type STRING. La valeur de ce paramètre peut correspondre aux deux ou trois premières lettres d'un jour de la semaine ou au nom complet d'un jour de la semaine, par exemple MO, TUE ou FRIDAY.

  • Valeur de retour

    Une valeur de type STRING est renvoyée. La valeur de retour est au format yyyy-mm-dd. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type TIMESTAMP, DATE, DATETIME ou STRING, ou si le format ne répond pas aux exigences, null est renvoyé.

    • Si la valeur de date est null, une erreur est renvoyée.

    • Si la valeur de week est null, null est renvoyé.

  • Exemples

    • Exemples de données statiques

      -- 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);
    • Exemples de données de table

      Obtenez la date du jour de la semaine suivante correspondant à chaque valeur de date des colonnes date1, datetime1, timestamp1 et date3. Les données de la section Données d'exemple sont utilisées dans cet exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    DATETIME NOW()
  • description

    Renvoie la date et l'heure actuelles du système.

  • Valeur de retour

    Une valeur de type DATETIME est renvoyée. La valeur de retour est au format yyyy-mm-dd hh:mi:ss.SSS.

  • Exemples

    • Aucun format n'est spécifié. La partie milliseconde de la valeur renvoyée peut comporter 1, 2 ou 3 chiffres.

      SELECT NOW(); 

      Le résultat suivant est renvoyé.

      +------+
      | _c0  |
      +------+
      | 2023-06-13 10:53:24.967 |
      +------+
    • Le format de l'heure est spécifié.

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

      Le résultat suivant est renvoyé.

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

QUARTER

  • Syntaxe

    INT QUARTER(DATETIME|TIMESTAMP|DATE|STRING <date>) 
  • description

    Renvoie le trimestre auquel appartient une valeur de date. Valeurs valides : 1 à 4. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    date : obligatoire. Valeur de date de type DATETIME, TIMESTAMP, DATE ou STRING. La valeur d'entrée est au format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au moins la partie yyyy-mm-dd et ne pas contenir de chaînes supplémentaires.

  • Valeur de retour

    Une valeur de type INT est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATETIME, TIMESTAMP, DATE ou STRING, ou si le format ne répond pas aux exigences, null est renvoyé.

    • Si la valeur de date est null, null est renvoyé.

  • Exemples

    • Exemples de données statiques

      -- 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);
    • Exemples de données de table

      Obtenez le trimestre auquel appartient chaque valeur de date des colonnes date1, datetime1, timestamp1 et date3. Les données de la section Données d'exemple sont utilisées dans cet exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    INT SECOND(DATETIME|TIMESTAMP|STRING <date>)
  • description

    Renvoie la composante seconde d'une valeur de date. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    date : obligatoire. Valeur de date de type DATETIME, TIMESTAMP ou STRING. La valeur de date est au format yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3.

  • Valeur de retour

    Une valeur de type INT est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATETIME, TIMESTAMP ou STRING, ou si le format ne répond pas aux exigences, null est renvoyé.

    • Si la valeur de date est null, null est renvoyé.

  • Exemples

    • Exemples de données statiques

      -- 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);
    • Exemples de données de table

      Obtenez les composantes seconde des valeurs de date des colonnes datetime1 et timestamp1. Les données de la section Données d'exemple sont utilisées dans cet exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    STRING TO_CHAR(DATETIME <date>, STRING <format>) 
  • Description

    Convertit une valeur de date de type DATETIME en une chaîne selon un format spécifié.

  • Paramètres

    Paramètre

    Obligatoire

    Description

    date

    Oui

    Valeur de date de type DATETIME. La valeur de date est au format yyyy-mm-dd hh:mi:ss. Si la valeur d'entrée est de type STRING et que l'édition de type de données MaxCompute V1.0 est utilisée dans votre projet, la valeur d'entrée est implicitement convertie en type DATETIME avant le calcul.

    format

    Oui

    Constante de type STRING. Dans la valeur du paramètre format, la partie correspondant au format de date est remplacée par les données associées et les autres caractères restent inchangés dans la sortie.

  • Valeur de retour

    Une valeur de type STRING est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si la valeur du paramètre date n'est pas de type DATETIME ou STRING, une erreur est renvoyée.

    • Si la valeur du paramètre date est null, une erreur est renvoyée.

    • Si la valeur du paramètre format est null, la valeur null est renvoyée.

  • Exemples

    • Exemples de données statiques

      • Exemple 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');

        Le résultat suivant est renvoyé.

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

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

        Le résultat suivant est renvoyé.

        +------------+
        | _c0        |
        +------------+
        | 20080718   |
        +------------+
      • Exemple 3

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

        Le résultat suivant est renvoyé.

        +------------+
        | _c0        |
        +------------+
        | 20080718   |
        +------------+
      • Exemple 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');
      • Exemple 5

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

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

        Le résultat suivant est renvoyé.

        +------------+
        | _c0        |
        +------------+
        | NULL       |
        +------------+
    • Exemples de données de table

      Convertissez les valeurs de date de la colonne datetime1 en chaînes selon un format spécifié. Les données de la section Données d'exemple sont utilisées dans cet exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    DATETIME|DATE TO_DATE(STRING <date>[, STRING <format>])
  • Description

    Convertit une chaîne en une valeur de date selon un format spécifié.

  • Paramètres

    Paramètre

    Obligatoire

    Description

    date

    Oui

    Valeur de date de type STRING. Ce paramètre spécifie la chaîne de date à convertir. Si la valeur d'entrée est de type BIGINT, DOUBLE, DECIMAL ou DATETIME, elle est implicitement convertie en type STRING avant le calcul. La chaîne de date peut également être au format ISO 8601.

    format

    Non

    • Constante de type STRING. Ce paramètre spécifie le format de date. Le paramètre format ne prend pas en charge EDTF. Les autres caractères sont omis en tant que caractères non valides lors de l'analyse.

    • La valeur doit contenir yyyy. Sinon, NULL est renvoyé. Si des chaînes de format redondantes existent dans le paramètre format, cette fonction convertit la chaîne de date correspondant à la première chaîne de format en une valeur de date. Les autres chaînes sont considérées comme des délimiteurs. Par exemple, TO_DATE("1234-2234", "yyyy-yyyy") renvoie 1234-01-01 00:00:00.

    • yyyy indique une année à 4 chiffres. mm indique un mois à 2 chiffres. dd indique un jour à 2 chiffres. hh indique une heure basée sur l'horloge de 24 heures. mi indique une minute à 2 chiffres. ss indique une seconde à 2 chiffres. ff3 indique une milliseconde à 3 chiffres.

  • Valeur de retour

    Une valeur de type DATE ou DATETIME est renvoyée.

    • Si le paramètre format n'est pas inclus dans les paramètres d'entrée et que la chaîne à convertir est au format yyyy-mm-dd ou yyyy-mm-dd hh:mi:ss, une valeur de type DATE au format yyyy-mm-dd est renvoyée. Si le paramètre format n'est pas inclus dans les paramètres d'entrée et que la chaîne à convertir n'est pas au format yyyy-mm-dd ou yyyy-mm-dd hh:mi:ss, la valeur null est renvoyée.

    • Si le paramètre format est inclus dans les paramètres d'entrée, une valeur de type DATETIME au format yyyy-mm-dd hh:mi:ss est renvoyée. Si la valeur du paramètre date ou format est null, la valeur null est renvoyée.

  • Exemples

    • Exemples de données statiques

      -- 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');
    • Exemples de données de table

      Convertissez les valeurs de date de la colonne date3 en valeurs de date selon un format spécifié. Les données de la section Données d'exemple sont utilisées dans cet exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    BIGINT TO_MILLIS(DATETIME|TIMESTAMP <date>);
  • Description

    Convertit une valeur de date en un horodatage UNIX précis à la milliseconde. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    date : obligatoire. Valeur de date de type DATETIME ou TIMESTAMP. La valeur de date est au format yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss.ff3.

  • Valeur de retour

    Une valeur de type BIGINT est renvoyée. La valeur de retour varie selon les règles suivantes :

    • Si la valeur du paramètre date n'est pas de type DATETIME ou TIMESTAMP, une erreur est renvoyée.

    • Si la valeur du paramètre date est null, une erreur est renvoyée.

  • Exemples

    • Exemples de données statiques

      -- 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');
    • Exemples de données de table

      Convertissez les valeurs de date des colonnes datetime1 et timestamp1 en horodatages UNIX précis à la milliseconde. Les données de la section Données d'exemple sont utilisées dans cet exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Format de commande

    string TRUNC_TIME(date|datetime|timestamp|timestamp_ntz <date>, string <datepart>)
  • Description

    Tronque les données de type date ou heure selon l'unité de temps spécifiée par datepart et renvoie des données de type STRING.

  • Paramètres

    • date : obligatoire. Prend en charge les types DATE, DATETIME, TIMESTAMP ou TIMESTAMP_NTZ. Si l'entrée est de type STRING et que la version du type de données du projet MaxCompute est 1,0, elle sera implicitement convertie en type DATETIME avant le calcul.

    • datepart : obligatoire. Constante de type STRING, insensible à la casse, prend en charge year, month, day et hour.

  • Valeur de retour

    Renvoie le type STRING.

    Le format STRING est le suivant :

    • Lorsque datepart est 'year' : Renvoie le format STRING yyyy.

    • Lorsque datepart est 'month' : Renvoie le format STRING yyyy-mm.

    • Lorsque datepart est 'day' : Renvoie le format STRING yyyy-mm-dd.

    • Lorsque datepart est 'hour' : Renvoie le format STRING yyyy-mm-dd hh:mm:ss.

    Règles de retour :

    • Lorsque date n'est pas de type DATE, DATETIME, TIMESTAMP ou TIMESTAMP_NTZ, une erreur est renvoyée. Le type STRING pour date est uniquement pris en charge lorsque la version du type de données du projet MaxCompute est 1,0.

    • Lorsque datepart est NULL, une erreur est renvoyée.

  • Exemples

    • Heure de type DATETIME

      Par exemple, lorsque le fuseau horaire actuel de la session ou du projet est UTC+8, l'heure locale est datetime '2025-06-03 07:15:08', la fonction TRUNC_TIME convertit d'abord l'heure locale en heure UTC '2025-06-02 23:15:08', puis tronque selon datepart et renvoie le résultat sous forme de type 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;

      Le résultat suivant est renvoyé.

      +------------+------------+------------+------------+
      | tc_year    | tc_month   | tc_date    | tc_hour    |
      +------------+------------+------------+------------+
      | 2025       | 2025-06    | 2025-06-02 | 2025-06-02 23:00:00 |
      +------------+------------+------------+------------+
    • Heure de type DATE

      Par exemple, l'heure d'entrée est date '2025-06-10', la fonction TRUNC_TIME tronque les données de type DATE selon l'unité de temps spécifiée par datepart et renvoie le type STRING.

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

      Le résultat suivant est renvoyé.

      +------------+------------+------------+
      | _c0        | _c1        | _c2        |
      +------------+------------+------------+
      | 2025       | 2025-06    | 2025-06-10 |
      +------------+------------+------------+
    • Heure de type STRING

      Par exemple, l'heure d'entrée est de type STRING '2025-06-03 15:30:30'. Vous devez définir la version du type de données du projet MaxCompute sur 1,0 pour qu'elle soit implicitement convertie en type DATETIME avant le calcul. Sinon, une erreur sera renvoyée.

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

      Le résultat suivant est renvoyé.

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

UNIX_TIMESTAMP

  • Syntaxe

    BIGINT UNIX_TIMESTAMP(DATETIME|DATE|TIMESTAMP|STRING <date>) 
  • Description

    Convertit une valeur date en horodatage UNIX sous forme d'entier.

  • Paramètres

    date : obligatoire. Valeur de date de type DATETIME, DATE, TIMESTAMP ou STRING. La valeur d'entrée doit respecter le format yyyy-mm-dd hh:mi:ss, yyyy-mm-dd ou yyyy-mm-dd hh:mi:ss.ff3. Si la valeur d'entrée est de type STRING et que votre projet utilise l'édition de types de données MaxCompute V1.0, la conversion implicite vers le type DATETIME s'effectue avant le calcul. Pour plus d'informations sur l'édition de types de données MaxCompute V1.0, consultez la rubrique Édition de type de données 1.0. Si vous activez l'édition de types de données MaxCompute V2.0, la conversion implicite échoue. Dans ce cas, vous devez utiliser la fonction CAST, par exemple unix_timestamp(cast(... as datetime)), pour convertir les types de données. Vous pouvez également désactiver l'édition de types de données MaxCompute V2.0. Pour plus d'informations sur l'édition de types de données MaxCompute V2.0, consultez la rubrique Édition de type de données 2.0.

    Remarque

    Si la valeur d'entrée est une constante et ne provient pas d'une table, elle doit respecter le format DATETIME'yyyy-mm-dd hh:mi:ss', DATE'yyyy-mm-dd' ou TIMESTAMP'yyyy-mm-dd hh:mi:ss.ff3'. Si la valeur d'entrée ne contient pas le mot-clé du type de données et respecte le format 'yyyy-mm-dd hh:mi:ss', elle est interprétée comme une valeur de type STRING.

  • Valeur de retour

    Renvoie un horodatage UNIX de type BIGINT. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATETIME, DATE, TIMESTAMP ou STRING, ou si le format ne respecte pas les exigences, une erreur est renvoyée ou la valeur NULL est retournée.

    • Si la valeur de date est NULL, la valeur NULL est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Convertissez les valeurs de date des colonnes date1, datetime1 et timestamp1 en horodatages UNIX sous forme d'entiers. Cet exemple utilise les données présentées dans la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    BIGINT WEEKDAY(DATETIME <date>)
  • Description

    Renvoie un nombre représentant le jour de la semaine correspondant à une valeur date.

  • Paramètres

    date : obligatoire. Valeur de type DATETIME. La date doit respecter le format yyyy-mm-dd hh:mi:ss. Si la valeur d'entrée est de type STRING et que votre projet utilise l'édition de types de données MaxCompute V1.0, la conversion implicite vers le type DATETIME s'effectue avant le calcul.

  • Valeur de retour

    Renvoie une valeur de type BIGINT. La valeur de retour varie selon les règles suivantes :

    • Le lundi est considéré comme le premier jour de la semaine et sa valeur de retour est 0. Les jours de la semaine sont numérotés par ordre croissant à partir de 0. La valeur de retour pour le dimanche est 6.

    • Si la valeur de date n'est pas de type DATETIME ou STRING, ou si le format ne respecte pas les exigences, une erreur est renvoyée.

    • Si la valeur de date est NULL, la valeur NULL est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Calculez le jour de la semaine correspondant à chaque valeur de date de la colonne datetime1. Cet exemple utilise les données présentées dans la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    BIGINT WEEKOFYEAR(DATETIME <date>)
  • Description

    Renvoie un nombre représentant la semaine de l'année correspondant à une valeur de date. Le lundi est considéré comme le premier jour de la semaine.

    Remarque

    Pour déterminer si une semaine appartient à l'année en cours ou à l'année suivante, identifiez l'année contenant plus de quatre jours de cette semaine. Si la semaine appartient à l'année en cours, elle est considérée comme la dernière semaine de l'année. Si elle appartient à l'année suivante, elle est considérée comme la première semaine de l'année suivante.

  • Paramètres

    date : obligatoire. Valeur de type DATETIME. La date doit respecter le format yyyy-mm-dd hh:mi:ss. Si la valeur d'entrée est de type STRING et que votre projet utilise l'édition de types de données MaxCompute V1.0, la conversion implicite vers le type DATETIME s'effectue avant le calcul.

  • Valeur de retour

    Renvoie une valeur de type BIGINT. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATETIME ou STRING, ou si le format ne respecte pas les exigences, la valeur NULL est renvoyée.

    • Si la valeur de date est NULL, la valeur NULL est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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);
    • Exemples avec des données de table

      Calculez le numéro de la semaine de l'année correspondant à chaque date de la colonne datetime1. Cet exemple utilise les données présentées dans la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

  • Syntaxe

    INT YEAR(DATETIME|TIMESTAMP|DATE|STRING <date>) 
  • Description

    Renvoie l'année correspondant à une valeur date. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

  • Paramètres

    date : obligatoire. Valeur de date de type DATETIME, TIMESTAMP, DATE ou STRING. La valeur d'entrée doit respecter le format yyyy-mm-dd, yyyy-mm-dd hh:mi:ss ou yyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au moins la partie yyyy-mm-dd et ne peut pas contenir de chaînes supplémentaires.

  • Valeur de retour

    Renvoie une valeur de type INT. La valeur de retour varie selon les règles suivantes :

    • Si la valeur de date n'est pas de type DATETIME, TIMESTAMP, DATE ou STRING, ou si le format ne respecte pas les exigences, la valeur NULL est renvoyée.

    • Si la valeur de date est NULL, la valeur NULL est renvoyée.

  • Exemples

    • Exemples avec des données statiques

      -- 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); 
    • Exemples avec des données de table

      Obtenez l'année correspondant à chaque valeur de date des colonnes date1, datetime1, timestamp1 et date3. Cet exemple utilise les données présentées dans la section Données d'exemple. Exemple d'instruction :

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

      Le résultat suivant est renvoyé.

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

Références