2012-04-25 16 views
9

DB2の現在の日付をyyyymmddにフォーマットするだけです。DB2の日付形式

私は利用可能な日付形式を見ていますが、どうすれば使用できますか?

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

SELECT CURDATE() FROM SYSIBM.SYSDUMMY1; 

私は、上記のフォーマットを使用する任意の簡単な方法を参照してくださいいけません。

提案がありますか?

答えて

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

メインフレームおよびLinux/UNIX/Windows上のDB2の両方で動作するはずです。 Info Center entry for VARCHAR_FORMAT()

+0

が動作します。ありがとう..あなたはまた、上記の日から日をどのように下回ることができるかを伝えることができますか.................................. ...................... CURDATE() - (3日) – zod

+0

あなたはすでにそれを持っているようです。 :) 'CURRENT TIMESTAMP - 3 DAY' – bhamby

2

これは簡単ではありませんが、

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

はYYYY-MM-DD形式で現在の日付を返します。 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

ありがとうございますが、これを行うにはこれが唯一の方法ですか?次に、フォーマットの使用は何ですか?DATE_K YYYYMMDD ?? – zod

+0

私のDB2上で動作するALTDATE関数を取得できませんでした。私の答えに掲載されているものは動作します。 –

1

現在の日付はyyyy-mm-ddフォーマットです。あなたはsubstring機能を使用してyyyymmdd形式に変換することができます

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

もう一つの解決策(CHAR(現在の日付、ISO)を、 ' - '、 '')REPLACE

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

結果:20160510

+0

クエリが機能しません。戻り値: SQL0440N 互換性のある引き数を持つタイプ "FUNCTION"の "TO_CHAR"という名前の許可ルーチンが見つかりませんでした。 SQLSTATE = 42884 – Ian