2012-04-25 24 views
9

Sadece geçerli tarihi DB2'de yyyymmdd biçiminde biçimlendirmek istiyorum.DB2 Tarih biçimi

Kullanılabilir tarih biçimlerini görüyorum, ancak bunları nasıl kullanabilirim?

SELECT CURDATE() FROM SYSIBM.SYSDUMMY1; 

http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.db2z10.doc.intro%2Fsrc%2Ftpc%2Fdb2z_datetimetimestamp.htm

Yukarıda listelenen biçimleri kullanmak için herhangi bir dolaysız yol görmüyorum.

Herhangi bir öneriniz var mı?

cevap

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

hem Mainframe ve Linux/Unix/Windows DB2 üzerinde çalışabilir. Info Center entry for VARCHAR_FORMAT().

+0

. Teşekkürler .. Yukarıdaki tarihten nasıl vazgeçebilirim? ................................... ...................... CURDATE() - (3 gün) – zod

+0

gibi görünüyor. :) 'CURRENT TIMESTAMP - 3 DAY ' – bhamby

2

Bu basit değildir, ancak

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

yyyy-aa-gg biçiminde geçerli tarihi döndürür. Yyyymmdd almak için sonucu substring ve bitiştirmek zorunda kalacaktınız.

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

Teşekkürler .. ama bunu yapmanın tek yolu bu mu? sonra formatların kullanımı nedir .... DATE_K YYYYMMDD ?? – zod

+0

DB2 üzerinde çalışmak için ALTDATE işlevini alamadım. Cevabımda yayınladığım işler. Çalışıyor –

1

Geçerli tarih yyyy-mm-dd biçimindedir. Sen substring işlevini kullanarak yyyymmdd biçime dönüştürebilirsiniz:

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

Bir daha çözeltisi (CHAR (geçerli tarih, ISO), '-', '') DEĞİŞTİRİN

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

sonucu: 20160510

+0

Sorgu çalışmıyor. Geri dönüyor: SQL0440N uyumlu argümanlara sahip "FUNCTION" türünde "TO_CHAR" adlı yetkili bir rutin bulunamadı. Sqlstate = 42.884 – Ian