2016-10-26 1 views
0

In einer DB2-SQL-Abfrage gebe ich zwei Ganzzahlen zurück: Jahr und Monat. Daraus muss ich eine Zeichenkette im Format TT/MM/JJJJ erstellen. Das Datum muss den ersten Tag des NEXT-Monats darstellen.Konvertieren von iSeries-Datum in Zeichenfolge, nachdem es auf den 1. des nächsten Monats festgelegt wurde

So zum Beispiel Jahr = 2016, Monat = 9 in der Zeichenfolge führen würde "2016.01.10"

Derzeit verwende ich die folgenden (die ich geerbt), dies zu tun:

substring(cast(DATE(INSERT(INSERT(LEFT(CHAR((Year * 10000) + (Month * 100) + 1),8),5,0,''-''),8,0,''-'')) + 1 month as char(10)),9,2)|| ''/'' || 
substring(cast(DATE(INSERT(INSERT(LEFT(CHAR((Year * 10000) + (Month * 100) + 1),8),5,0,''-''),8,0,''-'')) + 1 month as char(10)),6,2)|| ''/''|| 
substring(cast(DATE(INSERT(INSERT(LEFT(CHAR((Year * 10000) + (Month * 100) + 1),8),5,0,''-''),8,0,''-'')) + 1 month as char(10)),1,4) as UPDATEDATE 

aber es scheint schrecklich. Gibt es einen besseren Weg, um dieses Ergebnis zu erreichen?

Dank

Ron Ventura

Antwort

1

versuchen, diese

select VARCHAR_FORMAT(TIMESTAMP_FORMAT(cast(year*10000+month*100+1 as char(8)), 'YYYYMMDD') + 1 month, 'DD/MM/YYYY') as mydate           
from yourtable 
Verwandte Themen