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 |
|
Renvoie une valeur de date obtenue après l'ajout d'un nombre de mois à une date spécifiée. |
|
|
Renvoie l'horodatage actuel. |
|
|
Renvoie le fuseau horaire du système actuel. |
|
|
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 |
|
|
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. |
|
|
Convertit une valeur de date en chaîne dans un format spécifié. |
|
|
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 |
|
|
Calcule la différence entre deux valeurs de date en fonction de l'unité de temps spécifiée par datepart. |
|
|
Renvoie un composant spécifié d'une valeur de date en fonction de l'unité de temps spécifiée par datepart. |
|
|
Tronque une valeur de date en fonction de l'unité de temps spécifiée par datepart. |
|
|
Renvoie le jour correspondant à une valeur de date. |
|
|
Renvoie le composant jour d'une valeur de date. |
|
|
Renvoie le jour de la semaine correspondant à une valeur de date. |
|
|
Renvoie un entier représentant le jour séquentiel de l'année. |
|
|
Renvoie un composant spécifié d'un horodatage. |
|
|
Convertit un horodatage UNIX de type BIGINT en une valeur de date de type DATETIME. |
|
|
Convertit un horodatage UTC en un horodatage pour un fuseau horaire spécifié. |
|
|
Renvoie l'heure système actuelle sous forme de valeur de date. |
|
|
Renvoie le composant heure d'une valeur de date. |
|
|
Détermine si une chaîne de date peut être convertie en une valeur de date dans un format spécifié. |
|
|
Renvoie le dernier jour du mois correspondant à une valeur de date. |
|
|
Renvoie le dernier jour du mois correspondant à une valeur de date. |
|
|
Renvoie le composant minute d'une valeur de date. |
|
|
Renvoie le mois correspondant à une valeur de date. |
|
|
Renvoie le nombre de mois entre les valeurs de date spécifiées. |
|
|
Renvoie la date du premier jour de la semaine postérieur à une valeur de date et correspondant à la semaine spécifiée. |
|
|
Renvoie la date et l'heure système actuelles. |
|
|
Renvoie le trimestre correspondant à une valeur de date. |
|
|
Renvoie le composant seconde d'une valeur de date. |
|
|
Convertit une valeur de date en chaîne dans un format spécifié. |
|
|
Convertit une chaîne en une valeur de date dans un format spécifié. |
|
|
Convertit une valeur de date en un horodatage UNIX précis à la milliseconde. |
|
|
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. |
|
|
Convertit une valeur de date en un horodatage UNIX sous forme d'entier. |
|
|
Renvoie un nombre représentant le jour de la semaine correspondant à une valeur de date. |
|
|
Renvoie un nombre représentant la semaine de l'année correspondant à une valeur de date. |
|
|
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:ssouyyyy-mm-dd hh:mi:ss.ff3. Si la valeur est de type STRING, elle doit inclure au moins la partieyyyy-mm-ddet 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.
RemarquePour 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 que2021-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.
RemarqueSi 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
yyyyindique le composant année d'une valeur de date. La valeurmmindique le composant mois d'une valeur de date. La valeurddindique 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,-dayou-hour. -
Valeur renvoyée
Une valeur de type DATE ou DATETIME est renvoyée. La valeur renvoyée est au format
yyyy-mm-ddouyyyy-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:SSSetyyyy-MM-dd hh:mi:ss:SSS. La valeur se compose des éléments suivants :YYYYouyyyy: l'année. yyyy représente l'année civile et YYYY représente l'année de la semaine.RemarqueL'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.
ImportantSi l'édition de type de données compatible avec Hive est désactivée,
HHethhindiquent tous deux l'utilisation du format 24 heures. Dans ce cas, le format de date doit êtreyyyy-MM-dd hh:mi:ss. Si vous utilisezyyyy-MM-dd hh:mm:ss, le composantmmprend la même valeur que le composant MM.Si l'édition de type de données compatible avec Hive est activée,
HHindique l'utilisation du format 24 heures ethhindique l'utilisation du format 12 heures. Dans ce cas, le format de date doit êtreyyyy-MM-dd hh:mm:ss. Si vous utilisezyyyy-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.
RemarquePour 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.
RemarqueSeule 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,-dayou-hour.RemarqueCette 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
yyyydésigne l'année. La valeurmmindique le mois. La valeurddcorrespond 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,-dayou-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
yyyydésigne l'année. La valeurmmindique le mois. La valeurddcorrespond 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,-dayou-hour. -
Valeur renvoyée
Une valeur de type DATE ou DATETIME est renvoyée. Le résultat est au format
yyyy-mm-ddouyyyy-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:ssouyyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au minimum la partieyyyy-mm-ddet 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:ssouyyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au minimum la partieyyyy-mm-ddet 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:ssouyyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au moins la partieyyyy-mm-ddet 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:ssouyyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au moins la partieyyyy-mm-ddet 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:ssouyyyy-mm-dd hh:mi:ss.ff3. Si la valeur est de type STRING, elle doit inclure au moins la partieyyyy-mm-ddet 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].
RemarqueSi 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.RemarqueVous 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.
ImportantLa valeur de retour de la fonction FROM_UTC_TIMESTAMP est également affectée par la valeur de
odps.sql.timezoneconfigurée pour votre projet. Si vous configurezodps.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 fonctionFROM_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 est0 + 8 x 3600 = 28800. La configurationodps.sql.timezone=Asia/Shanghainécessite un décalage supplémentaire de 8 heures. Par conséquent, la valeur de retour est1970-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.
RemarqueVous 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.
RemarqueDans MaxCompute SQL,
GETDATErenvoie 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:ssouyyyy-mm-dd hh:mi:ss.ff3. Si la valeur est de type STRING, elle doit inclure au moins la partieyyyy-mm-ddet 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-ddet 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:ssouyyyy-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:ssouyyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au moins la partieyyyy-mm-ddet 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 partieyyyy-mm-ddet 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:ssouyyyy-mm-dd hh:mi:ss.ff3. Si la valeur est de type STRING, elle doit inclure au moins la partieyyyy-mm-ddet 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:ssouyyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au moins la partieyyyy-mm-ddet 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:ssouyyyy-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")renvoie1234-01-01 00:00:00.yyyyindique une année à 4 chiffres.mmindique un mois à 2 chiffres.ddindique un jour à 2 chiffres.hhindique une heure basée sur l'horloge de 24 heures.miindique une minute à 2 chiffres.ssindique une seconde à 2 chiffres.ff3indique 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 formatyyyy-mm-ddest 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:ssest 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:ssouyyyy-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,dayethour.
-
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-ddouyyyy-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 fonctionCAST, par exempleunix_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.RemarqueSi 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'ouTIMESTAMP'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.
RemarquePour 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:ssouyyyy-mm-dd hh:mi:ss:ff3. Si la valeur est de type STRING, elle doit inclure au moins la partieyyyy-mm-ddet 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
Si les fonctions intégrées précédentes ne répondent pas à vos besoins métier, MaxCompute prend également en charge les fonctions définies par l'utilisateur (UDF). Pour plus d'informations sur les UDF, consultez la rubrique Présentation.
-
Pour plus d'informations sur la FAQ relative à MaxCompute SQL, consultez les rubriques suivantes :
-
Pour plus d'informations sur les erreurs courantes et la FAQ relatives aux fonctions intégrées de MaxCompute, consultez les rubriques suivantes :