2012-04-25 17 views

Odpowiedz

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

powinien działać na obu mainframe i Linux/Unix/Windows DB2. Info Center entry for VARCHAR_FORMAT().

+0

który działa. dzięki ... czy możesz również powiedzieć, jak mogę zamienić dni od powyższej daty .................................. ...................... jak CURDATE() - (3 dni) – zod

+0

Wygląda na to, że już ją masz. :) 'CURRENT TIMESTAMP - 3 DAY' – bhamby

2

To nie jest proste, ale

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

zwraca bieżącą datę w formacie rrrr-mm-dd. Będziesz musiał podłańcuchować i połączyć wynik, aby uzyskać rrrrmmdd.

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

dzięki .. ale czy to jedyny sposób na zrobienie tego? to jaki jest pożytek z formatów .... DATE_K YYYYMMDD ?? – zod

+0

Nie mogłem uzyskać funkcji ALTDATE do pracy z moją bazą danych DB2. To, co napisałem w mojej odpowiedzi, działa. –

1

Aktualna data jest w formacie yyyy-mm-dd. można przekonwertować go do formatu yyyymmdd użyciu substring funkcję:

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

Jeszcze rozwiązanie REPLACE (char (aktualna data, ISO), '-', '')

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

wynik: 20160510

+0

Zapytanie nie działa. Zwraca: SQL0440N Nie znaleziono autoryzowanej procedury o nazwie "TO_CHAR" typu "FUNCTION" o argumentach zgodnych z . SQLSTATE = 42884 – Ian