2017-08-12 14 views
-2

IBM System i Access for Windowsバージョン6リリース1でSQLを使用して、AS400から緑色の画面を抽出します。私はそれがDB2になると思いますか?1YYMMDDから通常のSQL日付形式

たとえば、日付データが1yymmddにフォーマットされている場合、2016年10月15日は日付が1161015になります。日付データを1yymmdd形式からMM/DD/YYYYに変換して日付として認識させたい数字ではありません。

問題の一部は、2つのエントリの日付の違いを調べたい場合、それを数字(たとえば1171015- 1161016 = 10,000)として認識しますが、365日にしたいと思っています。

この日付形式(1yymmdd)を(MM/DD/YYYY)として扱うには、どのような変換方法が適していますか?私が使っているコードの

例:

sSQL = SELECT A.DATE, curdate() 
      FROM TABLE1 A 
      LIMIT 10 

出力は

1141220 8/16/2017 
1130308 8/16/2017 
1141220 8/16/2017 
1141220 8/16/2017 
1140822 8/16/2017 
1140822 8/16/2017 
1141206 8/16/2017 
1141220 8/16/2017 
1140913 8/16/2017 
1141206 8/16/2017 
+1

使用しているデータベースで質問にタグを付けてください。 –

+0

日付との変換機能は、特定のRDMS(Oracle、SQL Server、MySQL、PostgreSQLなど)固有のものです。ご使用のRDBMSに質問にタグを付けてください。私が疑うことの1つは、データを文字列形式で取り込み、先行する「1」を「コピー」しない方が良いということです。 –

+0

私はそれが何を意味するかはわかりませんが、ibm iseriesにはsqlを使用しています – MrKen

答えて

0

私が正しく(EGADATE =それをコーディングする方法を見つけ出すことができました1161015)

SELECT DATE(TIMESTAMP((A.DATE + 19000000) CONCAT'000000')) 
FROM TABLE1 A 

ANSWER:

10/15/2016 

そして、日数の違いを見たい場合は(E.G. A.DATE1 = 1161015、A.DATE2 = 1161215):

SELECT (DAYS(DATE(TIMESTAMP((A.DATE2 + 19000000) CONCAT'000000'))) - DAYS(DATE(STANMP((A.DATE1+ 19000000) CONCAT'000000')))) 
FROM TABLE1 A 

ANSWER:y'allのあなたの助けのための

58 

ありがとう!

0

あなたは月の名前を取得するにはDATENAME機能を使用することができ、以下の通りです。日、年を取得するには、ちょうどCAST

SELECT DATENAME(MM, GETDATE()) AS [DD Month] + ' ' + CAST(DAY(GETDATE()) AS VARCHAR(2)) + ' ' + CAST(YEAR(GETDATE()) AS VARCHAR(4)) AS [DD Month YYYY]

を使用また、他のフォーマットを表示することができますSQL-SERVER-helperページから入手