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!
Utilisez Convert
function à la place. Exemple:
select convert(varchar(5), GETDATE(), 126) + convert(varchar(5), GETDATE(), 105)
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.
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.
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