web-dev-qa-db-fra.com

La fonction Format () ne fonctionne pas?

J'essaie d'exécuter la fonction intégrée suivante dans SQL mais cela me donne une erreur que cette fonction n'existe pas

ma requête:

select EmpId, EmpName, format(EmpJoinDate, "YYYY-DD-MM") as date from Employee

Erreur je reçois:

'format' is not a recognized built-in function name

Quel peut être le problème ou qu'est-ce que je fais mal?

Merci!

12
user728885

Utilisez Convert function à la place. Exemple:

select convert(varchar(5), GETDATE(), 126) + convert(varchar(5), GETDATE(), 105)
9
Kirill Polishchuk

En effet, FORMAT() n'est pas une fonction intégrée à SQL 2005. Vous devez utiliser la fonction CONVERT():

SELECT
    EmpId,
    EmpName,
    REPLACE(CONVERT(VARCHAR(10), EmpJoinDate, 102), '.', '-') AS date
FROM
    Employee

Quelques mises en garde cependant ... "date" est un mot réservé, je crois, donc je ne suggérerais pas de l'utiliser, même comme alias de colonne. En outre, ce qui précède donne en fait AAAA-MM-JJ. AAAA-JJ-MM est assez rare, je crois. Si vous voulez vraiment que vous deviez concaténer vous-même les choses avec les fonctions DATEPART et CAST ou concaténer des choses en utilisant SUBSTRING avec CONVERT.

Effectuez une recherche sur CONVERT et vous devriez pouvoir trouver tous les formats pris en charge. Celui que j'ai utilisé ci-dessus (102) est pour AAAA.MM.JJ, alors j'ai fait un remplacement pour donner les traits d'union à la place.

5
Tom H

D'après la documentation MSDN, http://msdn.Microsoft.com/en-us/library/hh213505(SQL.110).aspx , il s'agit d'une fonction intégrée. Je suppose que cela n'a pas été mis en œuvre.

2
RW5207

Les autres réponses fonctionneront, mais utilisez des chaînes de remplacement et des concat. Bien que vous puissiez définir date_style sur 23 pour convertir directement au format "AAAA-JJ-MM":

convert(varchar(10), EmpJoinDate, 23)

Pour une liste complète des formats, je voudrais faire référence à cette réponse SO impressionnante: https://stackoverflow.com/a/19537658/2140636

0
T_D