J'essaie depuis un certain temps maintenant d'obtenir une méthode similaire à GETDATE()
dans DB2 pour i. Jusqu'à présent, j'ai trouvé ce qui suit:
current date
current timestamp
current time
Serait-il possible pour moi de:
select specific, columns
from table
where datefield = current date - 1 day
Est-ce le moyen le plus efficace ou y a-t-il un moyen que je n'ai peut-être pas encore trouvé?
ÉDITER:
J'ai actuellement ceci:
WHERE datefield = - days(date('2013-10-28'))
bien que cela ne soit pas utile car je devrai le modifier chaque jour où la requête s'exécute.
Venons-en maintenant à ceci:
WHERE datefield = VARCHAR_FORMAT(CURRENT TIMESTAMP, 'YYYYMMDD') - 1
Sauf que cela ne fonctionnera pas le premier jour du mois car 1 - 1 = 0 et il n'y a pas de jour 0 dans un mois ...
Cela vous donnera la date d'hier:
SELECT CURRENT DATE - 1 DAY FROM sysibm.sysdummy1
Si vous souhaitez connaître une certaine plage de dates comme alternative, vous pouvez essayer la fonction scalaire TIMESTAMPDIFF, lire le diagramme de syntaxe Ignorer le diagramme de syntaxe visuelle Le paramètre: 16 indique qu'il sera évalué par jour
L'exemple suivant détermine une plage de 70 jours à partir de maintenant.
WHERE (TIMESTAMPDIFF(16, CHAR(SYSDATE- CURRENT DATE)) )<70 AND (TIMESTAMPDIFF(16, CHAR(SYSDATE- CURRENT DATE)) ) > -1
vous pouvez consulter ce lien pour tous les détails sur cette méthode prise en charge par DB2: http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2 .luw.sql.ref.doc/doc/r0000861.html? cp = SSEPGG_9.7.0% 2F2-10-3-2-155