Moin,
ich baue mir aus einem Monat und einem Jahr ein Datum zusammen.
Code:
SELECT CAST('01.'+IIF(Length(TRIM(CAST(7 as SQL_Char)))= 1, '0'+TRIM(CAST(7 as SQL_CHAR)), CAST(7 as SQL_Char))+'.'+CAST(2013 as SQL_Char) as SQL_Date) FROM System.iota
So funktioniert es.
Problem ist jetzt aber, dass ich nicht mehr den ersten des Monats brauche sondern den letzten.
Dazu habe ich mir eine Funktion geschrieben, die mir aus dem übergebenem Monat und Jahr den letzten Tag zurückliefert.
Code:
CREATE FUNCTION ZMIF.GetLastDayOfMonth
(
Year INTEGER,
Month INTEGER
)
RETURNS INTEGER
BEGIN
Return DAYOFMONTH(CONVERT(TIMESTAMPADD(SQL_TSI_DAY, -1, TIMESTAMPADD( SQL_TSI_MONTH, 1, CREATETIMESTAMP( Year, Month, 1, 0, 0, 0, 0 ))), SQL_DATE));
END;
Die Funktion baue ich in mein
SQL Statement ein und caste den Integer in eine Character.
Code:
SELECT CAST(CAST(GetLastDayOfMonth(2013, 7) as SQL_Char)+'.'+IIF(Length(TRIM(CAST(7 as SQL_Char)))= 1, '0'+TRIM(CAST(7 as SQL_CHAR)), CAST(7 as SQL_Char))+'.'+CAST(2013 as SQL_Char) as SQL_Date) FROM System.iota
Fehlermeldung ADS:
Zitat:
Conversion error with scalar
CAST -- Location of error in the
SQL statement is: 9 (line: 2 column: 8)