- Catégories :
TIMESTAMPADD¶
Ajoute la valeur spécifiée pour la partie de date ou d’heure spécifiée à une date, une heure ou un horodatage.
Alias pour DATEADD.
Syntaxe¶
TIMESTAMPADD( <date_or_time_part> , <time_value> , <date_or_time_expr> )
Arguments¶
date_or_time_part
Cela indique les unités de temps que vous souhaitez ajouter. Par exemple, si vous souhaitez ajouter 2 jours, l’unité est
DAY
. Cette unité de mesure doit être l’une des valeurs répertoriées dans Parties de date et d’heure prises en charge.value
C’est le nombre d’unités de temps que vous souhaitez ajouter. Par exemple, si vous souhaitez ajouter 2 jours, cela correspond à 2.
date_or_time_expr
date_or_time_expr
peut être une date, une heure ou un horodatage. Il s’agit de la date, de l’heure ou de l’horodatage auquel vous souhaitez ajouter un temps. Par exemple, si vous souhaitez ajouter 2 jours au 1er août 2018, il s’agira alors de'2018-08-01'::DATE
.Si le type de données est TIME, alors la
date_or_time_part
doit être exprimée en unités d’heures ou moins, et non en jours ou plus.Si le type de données en entrée est DATE et que la
date_or_time_part
est en heures ou inférieure à des heures, la valeur d’entrée ne sera pas rejetée mais sera traitée comme un TIMESTAMP avec les heures, les minutes, les secondes et les fractions de seconde toutes initialement réglées sur 0 (par exemple, minuit à la date spécifiée).
Renvoie¶
Si date_or_time_expr
est une heure :
Le type de données renvoyé est une heure.
Si date_or_time_expr
est un horodatage :
Le type de données renvoyé est un horodatage.
Si date_or_time_expr
est une date :
Si
date_or_time_part
est égal ou supérieur àday
(par exemple,month
,year
), la fonction renvoie une valeur DATE.Si
date_or_time_part
est inférieur à un jour (par exemple,hour
,minute
,second
), la fonction renvoie une valeur TIMESTAMP_NTZ, avec 00:00:00.000 comme heure de début, pour la date.
Notes sur l’utilisation¶
Lorsque
date_or_time_part
correspond àyear
,quarter
, oumonth
(ou à l’une de leurs variations), si le mois de résultat possède moins de jours que le jour du mois originel, le jour du mois du résultat peut être différent du jour originel.
Exemples¶
Ajouter des années à une date :
SELECT TO_DATE('2013-05-08') AS v1, DATEADD(year, 2, TO_DATE('2013-05-08')) AS v;Sortie :
+------------+------------+ | V1 | V | |------------+------------| | 2013-05-08 | 2015-05-08 | +------------+------------+
Ajoutez 2 ans et 2 heures à une date :
Configuration initiale de cet exemple et des exemples suivants :
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF9'; CREATE TABLE datetest (d date); INSERT INTO datetest VALUES ('2013-04-05');Requête pour ajouter 2 ans et 2 heures à une date :
SELECT d AS "DATE", dateadd(year, 2, d) AS add_2_years, dateadd(hour, 2, d) AS add_2_hours FROM datetest;Sortie :
+------------+-------------+-------------------------+ | DATE | ADD_2_YEARS | ADD_2_HOURS | |------------+-------------+-------------------------| | 2013-04-05 | 2015-04-05 | 2013-04-05 02:00:00.000 | +------------+-------------+-------------------------+
Ajoutez des heures à un horodatage :
SELECT TO_TIMESTAMP_LTZ('2013-05-08 11:22:33.444') AS v1, DATEADD(HOUR, 2, TO_TIMESTAMP_LTZ('2013-05-08 11:22:33.444')) AS v;Sortie :
+-------------------------------+-------------------------------+ | V1 | V | |-------------------------------+-------------------------------| | 2013-05-08 11:22:33.444000000 | 2013-05-08 13:22:33.444000000 | +-------------------------------+-------------------------------+
Ajoutez un mois à une date dans un mois ayant le même nombre de jours ou plus que le mois résultant. Par exemple, si nous sommes le 31 janvier, ajouter un mois ne devrait pas donner « 31 février ».
SELECT DATEADD(MONTH, 1, '2000-01-31'::DATE) AS DIFFERENT_DAY;Sortie :
+---------------+ | DIFFERENT_DAY | |---------------| | 2000-02-29 | +---------------+
Ajouter un mois à une date dans un mois ayant un nombre de jours inférieur à celui du mois résultant. L’ajout d’un mois au 29 février devrait nous donner le 29 mars, ce qui ne pose pas de problème.
SELECT DATEADD(MONTH, 1, '2000-02-29'::DATE) AS RESULT;Sortie :
+------------+ | RESULT | |------------| | 2000-03-29 | +------------+