2013-10-30 13 views
9

Ho cercato per un po 'di tempo per ottenere un metodo simile a GETDATE() in DB2 per i. Finora ho trovato il seguente:Metodo GETDATE() per DB2

current date 
current timestamp 
current time 

Sarebbe possibile per me:

select specific, columns 
from table 
where datefield = current date - 1 day 

È questo il modo più efficiente O c'è qualche modo che forse non ho ancora trovato?

EDIT:

Al momento ho questo:

WHERE datefield = - days(date('2013-10-28')) 

anche se questo non è utile come ho bisogno di modificarla ogni giorno l'esecuzione della query.

sono ormai arrivati ​​a questo:

WHERE datefield = VARCHAR_FORMAT(CURRENT TIMESTAMP, 'YYYYMMDD') - 1 

Tranne questo non funziona il primo giorno del mese come 1 - 1 = 0 e non c'è giorno 0 in un mese ...

+0

Cosa esattamente vuole raggiungere? Qual è la tua domanda ? Vuoi un giorno precedente al giorno corrente? – user2919277

+0

Ecco un piccolo articolo che potrebbe aiutarti: http://www.ibm.com/developerworks/data/library/techarticle/0211yip/0211yip3.html – steoleary

+1

seleziona dateadd (dd, -1, getdate()) Ciò darà tu il giorno precedente al giorno corrente. Se questo risponde alla tua domanda ... – user2919277

risposta

19

Questo vi darà la data di ieri:

SELECT CURRENT DATE - 1 DAY FROM sysibm.sysdummy1 
-3
select dateadd(dd,-1,getdate()) 
+0

Questo non funziona su DB2 per i, V6R1. –

+0

Non c'è DATEADD() in SQL standard. È un'estensione di Microsoft. MySQL ha anche Date_Add(). Simile a GETDATE(). – user2338816

3

Se vuoi sapere un certo intervallo di date, in alternativa si può provare la Funzione scalare TIMESTAMPDIFF, leggere diagramma di sintassi Schema sintattico visualSkip Il parametro: 16 indica che valuterà per giorni

Il prossimo esempio determina un intervallo di 70 giorni a partire da ora.

WHERE (TIMESTAMPDIFF(16, CHAR(SYSDATE- CURRENT DATE)))<70 AND (TIMESTAMPDIFF(16, CHAR(SYSDATE- CURRENT DATE))) > -1 

si può dare un'occhiata su questo link per tutti i dettagli su questo metodo che è supportato da 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

+1

Il riferimento è per DB2 LUW. Un riferimento DB2 per IBM i può essere consultato all'indirizzo http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzscatimedifstmp.htm –