Seit ein paar Tagen habe ich Probleme mit Daten in Firebird Abfrage. Ich versuche, 3 Daten in einem Feld in Select-Anweisung zu concat.Firebird Datum concatention Änderung Datumsformat
Aufbau dieses zu testen:
select
data_wyst, data_sp, data_pop,
data_wyst ||' | '|| data_sp ||' | '|| data_pop
from rv_sp_dok
Ergebnis ist:
2015-12-14; 2015-12-14; 2015-12-31; 14-DEC-2015 | 14-DEC-2015 | 31-DEC-2015
2015-12-31; 2015-12-31; null; null
2015-12-31; 2015-12-31; 2015-12-31; 31-DEC-2015 | 31-DEC-2015 | 31-DEC-2015
Also, wenn ein Datum null ist dann ganz concat null ist, und das Datumsformat geändert von ‚YYYY-MM- DD 'bis' TT-MM-JJJJ '. Ergebnis concat sollte sein:
2015-12-14; 2015-12-14; 2015-12-31; 2015-12-14 | 2015-12-14 | 2015-12-31
2015-12-31; 2015-12-31; null; 2015-12-31 | 2015-12-31 |
2015-12-31; 2015-12-31; 2015-12-31; 2015-12-31 | 2015-12-31 | 2015-12-31
Gibt es eine Möglichkeit Firebird zu verhindern Format zu ändern Datum, an Zeichenfolge gegossen (außer Prozedur Umwandlung date2string)?
// EDIT: Scheint beste Weg ist, Verfahren, das Datum zu Zeichenfolge konvertieren:
CREATE OR ALTER PROCEDURE DATE2STRING (DataIN Date)
returns (DataOut Varchar(10))
AS
declare variable y Varchar(4);
declare variable m Varchar(2);
declare variable d Varchar(2);
begin
IF (DataIn is null) then
BEGIN
DataOut = '';
END
ELSE
BEGIN
y = Substring(Extract(Year FROM DataIn) FROM 1 FOR 4);
m = Substring(Extract(Month FROM DataIn)+100 FROM 2 FOR 2);
d = Substring(Extract(Day FROM DataIn)+100 FROM 2 FOR 2);
DataOut = y || '-' || m || '-' || d;
END
SUSPEND;
end
Nun, keine bessere Lösung für jetzt gefunden, so ist es ein Extrakt oder eine Prozedur, die extrahieren wird. Immer noch daran denken, warum Firebird dies ändern, wenn das Datum ist:/ – Jerry1333
@ Jerry1333 Was ändern? Das Datumsformat der uncast-Felder wird ** clientseitig ** von der Anwendung behandelt, die dieses Datum zeigt, die Cast-Felder werden ** serverseitig ** in string konvertiert. Die Tatsache, dass der gesamte String null wird, wenn einer von ihnen null ist, liegt daran, dass SQL den Verkettungsoperator ('||') definiert. –