WernerK: SQL Datumsformatierung ohne Typwandlung

Hallo,

in einer SQL Server Tabelle steht ein Datum wie folgt drin:

2018-04-06 00:00:00.000

Ich hätte gerne eine deutsch Datumsansicht aber der Rückgabewert sollte DATETIME bleiben. So klappt zwar die Formatierung, aber es ist dann ein Varchar Typ

FORMAT ( [MY_DATE], 'd', 'de-de' ) AS MY_DATE

CONVERT(NVARCHAR, MY_DATE, 104) AS MY_DATE

Gibt es hier eine Möglichkeit?

viele Grüße

Werner

  1. Ich hätte gerne eine deutsch Datumsansicht aber der Rückgabewert sollte DATETIME bleiben.

    Dann gib es zurück wie es ist und besorge die Veränderung für die Ausgabe in der Sprache Deiner Clientanwendung. Falls das PHP ist...

  2. Tach!

    in einer SQL Server Tabelle steht ein Datum wie folgt drin:

    2018-04-06 00:00:00.000

    Nee, so steht das da nicht drin. Es sei denn, du hast es als String drinstehen. Ansonsten steht es in einem internen Format drin und es wird dir nur zur Ausgabe in dieser Form formatiert angezeigt.

    Gleiches gilt auch für die Eingabe. Da übergibst du ein Literal, also eine formatierte Darstellung, und das wird vom Parser interpretiert und in die interne Darstellung konvertiert.

    Ich hätte gerne eine deutsch Datumsansicht aber der Rückgabewert sollte DATETIME bleiben.

    Ein DATETIME hat keine Formatierung. Es ist einfach nur ein Wert. Die Formatierung kommt beim Ausgeben hinzu, und dann ist es ein String geworden und kein DATETIME mehr.

    Gibt es hier eine Möglichkeit?

    Nicht so wie du dir das vorstellst. Wenn du beides brauchst, musst du beides getrennt übermitteln. Oder du nimmst nur den Rohwert im passenden Datentyp und nimmst die Formatierung zum Ausgabezeitpunkt (oder wann auch immer du sie brauchst) selbst vor.

    dedlfix.