Fonctions de date/heure

Le tableau suivant décrit les fonctions de la date et de l'heure.
Tableau 1. Fonctions de date/heure
Type Descriptif
add_months(date,n) Renvoie la date qui correspond à " date plus le nombre de mois indiqué par l'entier " n. Si la date résultante comporte plus de jours que le nombre de jours disponibles dans le mois résultant, le résultat est le dernier jour de ce mois. Dans le cas contraire, la date résultante a la même composante jour que " date. Par exemple :
add_months('March 03, 2015',2) renvoie ''2015-05-03 00:00:00' '
'add_months('March 31, 2015',-1) renvoie ''2015-02-28 00:00:00'
age(ts,ts)
age(ts)
Renvoie l'intervalle entre deux horodatages. La valeur retournée est de la même précision que l'argument le plus précis. Par exemple :
  • select age('10-22-2003', '7-6-2002') renvoie '1 year 3 mons 16 days'
  • select age('10-22-2003 09:46:07.325', '7-6-2002') renvoie '1 year 3 mons 16 days 09:46:07.325'
Si vous spécifiez un seul argument, la fonction renvoie l'intervalle entre l'heure actuelle et l'horodatage spécifié. Cela équivaut à " age(CURRENT_TIMESTAMP, ts).

La prise en charge des intervalles SQL par Netezza Performance Server n'est pas standard.

date_part(units,col) Extrait la sous-zone représentée par " units de la valeur de la date/heure, de l'intervalle ou de la durée spécifiée pour " col. Cette fonction est équivalente à " extract().
date_trunc(units,date) Tronque la date spécifiée pour " date à la précision spécifiée par " units.
extract(units FROM col) Extrait la sous-zone représentée par " units de la valeur de la date/heure, de l'intervalle ou de la durée spécifiée pour " col. Cette fonction est équivalente à " date_part().
last_day(date) Renvoie le dernier jour du mois de la date spécifiée.
months_between(d1,d2) Renvoie le nombre de mois entre les dates 'd1 et 'd2:
  • Si le " d1 est postérieur au " d2, le résultat est positif.
  • Si le " d1 est antérieur au " d2, le résultat est négatif.
  • Si 'd1 et 'd2 sont soit les mêmes jours du mois, soit les derniers jours de leurs mois respectifs, le résultat est un nombre entier.
  • Dans le cas contraire, le résultat comprend une partie fractionnaire basée sur un mois de 31 jours.
Par exemple :
  • select months_between('2015-05-23', '2015-04-23') renvoie 1
  • select months_between('2015-02-28', '2015-05-31') renvoie -3
  • le select months_between('2015-05-15', '2014-05-05') renvoie le " 12.322580645 (12 mois complets, plus 10 jours supplémentaires ; 10/31=00.322580645)
next_day(date,weekday) Renvoie la date du jour de la semaine qui suit une date donnée. L'argument " date peut être une date ou un horodatage. Le format de la valeur renvoyée est le même que celui de l'argument " date.

L'argument 'weekday est une chaîne de trois caractères ou plus qui indique le jour de la semaine ('SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT') pour lequel la date doit être renvoyée. Il doit être placé entre guillemets simples et peut contenir des lettres majuscules ou minuscules. Les caractères spécifiés après le troisième sont ignorés. Par exemple, le premier samedi après le mercredi 25 décembre 2013 est le 28 décembre 2013 :

select next_day('12-25-2013','Saturday') renvoie '2013-12-28'

now() Cette fonction est identique à current_timestamp. Pour plus d'informations, voir Fonctions de conversion.
overlaps(a,b,c,d) Détermine si deux intervalles de temps se chevauchent. Les types de données de :
  • Les paramètres a et c peuvent être TIME ou TIMESTAMP, mais doivent être identiques pour les deux
  • Les paramètres b et d peuvent être TIME, TIME WITH TIME ZONE, ou INTERVAL, mais doivent être identiques pour les deux
Netezza Performance Server SQL prend en charge le prédicat de chevauchement SQL standard.
duration_add(a,b) Renvoie la durée qui résulte de l'addition des deux arguments (représentés par 'a et 'b). Les combinaisons valables de types de données d'argument sont décrites dans le tableau 2.
duration_subtract(a,b) Renvoie la durée obtenue lorsque le deuxième argument (b) est soustrait du premier argument (a). Les combinaisons valables de types de données d'argument sont décrites dans le tableau 3.
timeofday() Cette fonction est la version verbale de l'horodatage actuel. Par exemple, Mon 01 Dec 2014 16:12:05 EST. Le format de sortie est déterminé par la fonction de conversion utilisée (voir Fonctions de conversion)
timezone(timestamp from_tz to_tz) Convertit la valeur de l'horodatage d'entrée dans le fuseau horaire from_tz en un horodatage dans le fuseau horaire to_tz. Par exemple :
select TIMEZONE(timestamp '2000-07-04 17:00:00', 'America/New_York', 
'America/Los_Angeles');
      TIMEZONE
---------------------
 2000-07-04 14:00:00
(1 row)

Le système utilise la bibliothèque ICU pour vérifier et résoudre les valeurs de fuseau horaire fournies. http://userguide.icu-project.org/datetime/timezone pour plus d'informations sur les ID programmatiques tels que Canada/Newfoundland ou les valeurs de décalage brutes telles que GMT-03:30 pour spécifier les fuseaux horaires de manière fiable. Si la fonction ne peut pas résoudre les fuseaux horaires spécifiés dans la requête, celle-ci échoue avec le message suivantERROR: Time zone 'invalid_tz' not recognized.

Tableau 2. Combinaisons valables de types de données pour les arguments de la fonction duration_add
Type de données du premier argument Type de données du deuxième argument Retours
date numérique(8,0) date
heure numérique(6,0) heure
horodatage numérique(6,0) horodatage
numérique(8,0)
numérique(14,0)
numérique(15,1)
numérique(16,2)
numérique(17,3)
numérique(18,4)
numérique(19,5)
numérique(20,6)
Tableau 3. Combinaisons valables de types de données pour les arguments de la fonction duration_subtract
Type de données du premier argument Type de données du deuxième argument Retours
date date numérique(8,0)
numérique(8,0) date
heure heure numérique(6,0)
numérique(6,0) heure
horodatage horodatage numérique(20,6)
numérique(6,0) horodatage
numérique(8,0)
numérique(14,0)
numérique(15,1)
numérique(16,2)
numérique(17,3)
numérique(18,4)
numérique(19,5)
numérique(20,6)
Pour le deuxième argument ou la valeur retournée de la fonction duration_add ou duration_subtract :
  • Le type numeric(6,0) représente une durée de la forme hhmmss, par exemple 030745 pour trois heures, sept minutes et 45 secondes.
  • Le type numeric(8,0) représente une durée de la forme AAAAMMJJ, par exemple 00020525 pour deux ans, cinq mois et 25 jours.
  • Les autres valeurs numériques contiennent de 14 à 20 chiffres :
    • Les 8 premiers chiffres indiquent la date de la durée au format AAAAMMJJ.
    • Les 6 chiffres suivants indiquent la partie temporelle de la durée au format hhmmss.
    • Les chiffres 0 à 6 suivants indiquent une fraction de seconde.
    Par exemple, la durée " 00010521010521999::numeric(17,3) représente une période d'un an, cinq mois, 21 jours, une heure, cinq minutes et 21.999 secondes.