Laden...

Wie kann ich in einem OpenQuery einen Cast durchführen?

Erstellt von manullino vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.083 Views
manullino Themenstarter:in
371 Beiträge seit 2008
vor 6 Jahren
Wie kann ich in einem OpenQuery einen Cast durchführen?

verwendetes Datenbanksystem: <MYSQL>

Hallo zusammen

wie kann ich den in einem OpenQuery einen Cast durchführen?
Das Result der Spalte DelT ist immer NULL.


SELECT * FROM OPENQUERY(MYSQL, 'SELECT usName, CreateT, ChangeT, IFNULL(DelT,CAST(2018-1-1 as DateTime)) AS DelT FROM DB1.Users')

Vielen Dank,
Manullino

16.828 Beiträge seit 2008
vor 6 Jahren

Das Problem sieht mir zumindest eher danach aus, dass Du mit IFNUL auf ein Element (DelT) zugreifen willst, das zu diesem Zeitpunkt gar nicht existieren kann, weil sich dies aus dem SELECT erst ergibt.

Und ein CAST wird sicherlich nicht so funktionieren; auch ohne OpenQuery nicht.
Eher CAST('2018-01-01' as DateTime)

manullino Themenstarter:in
371 Beiträge seit 2008
vor 6 Jahren

Das Feld DelT gibt es schon in der Datenbank.

Hab den Query angepasst, bleibt aber bei dem NULL.

SELECT * FROM OPENQUERY(MYSQL, 'SELECT usName, CreateT, ChangeT, IFNULL(DelT,CAST(NOW() AS DATETIME)) AS DelT2 FROM DB1.Users')

Convert geht übrigens auch nicht:

SELECT * FROM OPENQUERY(MYSQL, 'SELECT usName, CreateT, ChangeT, IFNULL(DelT,CONVERT(NOW(), DATETIME)) AS DelT2 FROM DB1.Users')
manullino Themenstarter:in
371 Beiträge seit 2008
vor 6 Jahren

Den MySQL Query habe ich gefixt, es lag am IFNULL().

SELECT usName, CreateT, ChangeT, IF(DelT = '0000-00-00 00:00:00',CAST(NOW() AS DATETIME),DelT) AS DelT FROM Users

Allerdings gibt OPENQUERY fuer das Feld DelT nun einen falschen Wert (varbinary) zurueck.

0x323031372D31322D31322031323A35333A3338
Erwartet wird aber DateTime()

SELECT * FROM OPENQUERY(MYSQL, 'SELECT usName, CreateT, ChangeT, IF(DelT = "0000-00-00 00:00:00",CAST(NOW() AS DATETIME),DelT) AS DelT FROM Radex.Users')

Habt Ihr eine Idee?