2012-04-25 17 views

risposta

21
SELECT VARCHAR_FORMAT(CURRENT TIMESTAMP, 'YYYYMMDD') 
FROM SYSIBM.SYSDUMMY1 

dovrebbe funzionare su mainframe e Linux/Unix/Windows DB2. Info Center entry for VARCHAR_FORMAT().

+0

che funziona. grazie .. puoi anche dire come posso rispettare i giorni dalla data sopra .................................. ...................... come CURDATE() - (3 giorni) – zod

+0

Sembra che tu ce l'abbia già. :) 'ATTUAL TIMESTAMP - 3 DAY' – bhamby

2

Questo non è semplice, ma

SELECT CHAR(CURRENT DATE, ISO) FROM SYSIBM.SYSDUMMY1 

restituisce la data corrente nel formato AAAA-MM-dd. Dovresti eseguire la sottostringa e concatenare il risultato per ottenere yyyymmdd.

SELECT SUBSTR(CHAR(CURRENT DATE, ISO), 1, 4) || 
    SUBSTR(CHAR(CURRENT DATE, ISO), 6, 2) || 
    SUBSTR(CHAR(CURRENT DATE, ISO), 9, 2) 
FROM SYSIBM.SYSDUMMY1 
+0

grazie .. ma questo è l'unico modo per farlo? allora qual è l'uso dei formati .... DATE_K YYYYMMDD ?? – zod

+0

Non riesco a far funzionare la funzione ALTDATE sul mio DB2. Ciò che ho postato nella mia risposta funziona. –

1

La data corrente è nel formato yyyy-mm-dd. È possibile convertirlo in formato yyyymmdd usando substring funzione:

select substr(current date,1,4)||substr(current date,6,2)||substr(currentdate,9,2) 
3

Un'altra soluzione REPLACE (CAR (data corrente, ISO), '-', '')

-1
select to_char(current date, 'yyyymmdd') from sysibm.sysdummy1 

risultato: 20.160.510

+0

La query non funziona. Restituisce: SQL0440N Nessuna routine autorizzata denominata "TO_CHAR" di tipo "FUNCTION" con argomenti compatibili trovata. SQLSTATE = 42884 – Ian