Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#1

MySQL Funktion (z.B. YEAR()) gibt je nach DB unterschiedliche Typen zurück

  Alt 3. Aug 2022, 13:10
Datenbank: MySQL/MariaDB • Version: diverse • Zugriff über: UniDAC
Ich möchte gern eine einfache Abfrage machen:
Code:
SELECT
  YEAR(V_Dat) yr,
  MONTH(V_Dat) mn,
  DAY(V_Dat) dy,
  SUM(Anteil_I) sm
FROM
  rpohis
WHERE
  Tank_Nr = 20 
GROUP BY
  DATE(V_Dat)
ORDER BY
  yr DESC,
  mn ASC,
  dy ASC
Das ganze in einer TUniQuery, in welcher ich die Felder anlegen lassen habe.

Mit meiner DB auf meinem Entwicklungs-PC werden diese für die Spalten yr, mn und dy als TIntegerField angelegt.
Auf dem Live-System beim Kunden ist statt MariaDB noch eine ältere MySQL Installation, die ich auch nicht mal eben wechseln kann. Diese scheint für die Datumsfunktionen nun aber LargeInts zurückzugeben, sodass mein Programm dann meckert, dass TLargeField erwartet würden, aber TIntegerField gefunden wurden.

Ich habe bislang keine Möglichkeit gefunden, wie ich in dem SELECT einen bestimmten Ergebnistyp erzwingen kann. CAST() und CONVERT() lassen lediglich die generischen SIGNED und UNSIGNED Tyen zu, die zum selben Problem führen. Einen View kann ich auf dem Live-System aus mir unbekannten Gründen auch nicht erzeugen (die Option zum Anlegen ist unter HeidiSQL ausgegraut) - mit dem hätte ich ja die Möglihckeit die Typen fix zu definieren.

Was könnte ich da noch versuchen?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat